Python学习笔记

Python学习笔记

1.List

[起始:结束:步长]  步长可以为负数,要求结束>起始  
倒序 a = b[::-1]  
相乘 [42] * 3 = [42, 42, 42]  
强制转成list list('abc') = ['a', 'b', 'c']  
元组,不可变的list,(2,5,6)可作为dict的key或者函数的多个返回值  
可用函数 max(a) min(a) len(a) del a[2]  

method:

append & pop  
L.reverse()  
L.count(item)  
L.insert(5, item)  效果为item插入到L[5]  
L.sort()  
L2 = sorted(L1)  
L.sort(cmp, key=len, reverse=True)  

2.string

something about formatting…

method:

find,join,split,strip  
replace  
str.replace(ori, new)

3.dict

del d[key]

method:

pop & popitem
pop(key) return value,del item
popitem() return (key, value), del item
get & setdefault
get(key, defaultValue) 找到key返回value,找不到返回defaultValue
setdefault(key, defaultValue)找到key返回value,找不到返回defaultValue,并且插入键值对(key,defaultValue)
items()  keys()  values() 返回列表
iteritems()  iterkeys()  itervalues()  返回迭代器

for key, value in sorted(dict.items(), key=lambda x:x[1], reverse=False)
    print key + '\t' + value

4.导入

import xxx
from xxx import  yyy, zzz
import xxx as x
from xxx import yyy as y

5 赋值

#序列解包
x,y = y,x
key, value = d.popitem()

6.if and for

三元运算 a if b else c 如果b为true执行a否则c

while xxx:
    pass

for item in xrange(100):
    pass
# xrange(n) == [0,1,...,n-1]

一些迭代方式

#1.并行迭代
names = ["A", "B", "C"]
ages = [12, 55, 33]
for name, age in zip(names, ages):
    pass
#zip 取最短的list
#2. 编号迭代:
names = ["A", "B", "C"]
for index, item in enumerate(names):
    pass

#break-else
for item in dict:
    if xxxx:
        break #find something and break the loop
else:
    pass # didn't find

7.函数&参数

def xxx(a):
    'this is a introduction for xxx'
    pass
#函数的注释 xxx.__doc__ == xxx.func_doc== 'this is a introduction for xxx'

#指定参数
def xxx(arg1="a", arg2="b"):
    pass

#收集参数
def xxx(x, y, z=3, *t, **d):
    pass
# *t    接收剩余的未指定的参数,组成元祖
# **d  接收剩余的指定的参数,组成dict

#函数内修改全局变量
x = 1 #global val
def change_global():
    global x
    x += 1
#函数内局部变量名字会覆盖全局变量,调用全局变量时应用global()['val_name']

map() 接受一个单参数函数,和序列作为参数  
filter() 接受一个bool返回型的单参数函数 和序列,留下序列中true的值
reduce()接受一个双参数函数 和序列,依次迭代下去
lambda x,y:x+y

8.面向对象

__metaclass__ = type #使用新式类
class Person:
    def setName(self, name):
        self.name = name
    def getName(self):
        return self.name
    def __inaccessible(self):
        #__开头方法表示私有
        pass
    member = 0 
    def init(self):
        Person.member += 1  #所有实例共享变量,注意区别于self.member += 1

# something about superClass
class Filter:
    def init(self):
        self.blocked = []
    def filter(self, sq):
        return [x for x in sq if x not in self.blocked]

class SPAMFilter(Filter): #SPAMFilter is subClass of Filter
    def init(self): # rewrite init()
        slef.blocked = ['aa']

#查看一个类是否是另一个类的子类
issubclass(SPAMFilter, Filter)
#查看一个instance是否属于一个类
isinstance(f, Filter)
#查看一个类的基类们 
SPAMFilter.__bases__
#查看一个对象属于哪个类
f.__class__

#多个superClass
class Test(Class1, Class2):
    pass
# Test 继承了Class1和2,其中Class1的优先级高(覆盖Class2的方法)

9.模块

__name__字段在主程序中为__main__在导入的模块中显示为模块的名字

# hello.py
def hello():
    print "hello world!"
def test():
    hello()

if __name__ == "__main__":
    #如果我是主函数,则从这里运行,否则作为被导入的模块,以hello.test()的形式被调用
    test():

导入自己的模块

# python解释器一般寻找模块的路径
import sys
print sys.path
# 添加新路径
sys.path.append('xxx dir')

导入包

# 假设有如下结构的包drawing
# /drawing/
# /drawing/__init__.py
# /drawing/a.py
# /drawing/b.py
import drawing
#只能使用__init__.py
import drawing.a
#可使用drawing.a.xxx()
from drawing import a, b
#可直接使用a.xxx()

探索包与模块
dir()
__all__
help()
__doc__
__file__

10.文件IO,异常

11.test,config,log

    原文作者:pmonkey
    原文地址: https://segmentfault.com/a/1190000003777873
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞