Python Another Digest(2)
Class相关
* __future__ 这种前后double underscore的成为魔法方法;
* 常用: __iter__ 用于 for 循环;
* __metaclass__ 元类: 类的类,类也是对象,一般父类为type;
* 子类复写 __init__ 函数时必须显示调用super(SubClass, self)来调用父类的init函数;
* __len__ 对应 len()
* __getitem__ 对应 A[index]
* __setitem__ 对应 A[index]=
* @property 把函数变成一个属性
property(read_f, write_f, del_f, doc)
相关项:__getattribute__ __getattr__ __setattr__ __delattr__
* __dict__ 用于防止 __setattr__ 重复调用
迭代器-生成器
迭代器: 具有next方法的对象
- 优点: 一次获得一个(或少许几个) 需要迭代的对象,而非全部, 故节约内存;
- it = iter() 获得迭代器
生成器
- yield 关键词与return类似,但每次调用结果不同(函数有记忆)
- 生成器也用于迭代
- 生成器推导式 VS 列表推导式
标准库模块
- reload 重载模块,与import不同的是,后者多次import也只初始化一次,前者每次都重载;
- 包(package) 必须包含 init.py 文件
- sys.std[in, out, error] 标准输入,输出,错误
- os.system中 execv 调用外部函数
- webbrowser 打开浏览器
- frozenset 支持集合的集合, e.g. a.add(frozenset(b))
- heapq堆,用列表实现, nlargest(n, iter) 得到第n大元素
- shelve 把文件当字典(pickle的简单版)
正则表达式 re
- re.[match, compile, split]
- + * 默认最大匹配, +? *? 则最小匹配
out = pattern.match(your_str)
out.group(0)
out.group(1)
re.split('o(o)', 'foobar')
=> ['f', 'o', 'bar']
新版本
for word in words:
string += word
快于 ''.join(words)
file 文件读写
- open(filename, ‘r w a b’) 分别代表:读, 写, 追加,二进制读
- f.seek(offset) 移到第 offset 字节
- with open(filename) as fd: #结束时自动关闭fd
- with 其实是上下文管理器