可选模块
- python-dev 编译C时候用到的python头文件
- python-profiler 非GPL模块 例如hotshot优化器
- gcc 包含C代码扩展时候用的软件包
python es_setup.py setuptools
命令安装工具 在系统terminaleasy_install xx
来安装其他包[i*2 for i in range(10) if i%3==0 else i*3]
,生成表达式内可以生成一个列表 (有优化加成,运行速度快)调用时候使用 xxx.next() 模式来使用,或者 用for in 遍历 (句柄短,处理本函数耗时少)
还可以用
somevar=(yeild)
模式来使用 .send(var) 代替.next() 给生成器内传递参数,并返回值
协同程序 使用 生成器 构造函数中 使用try except finally 语法写的,带.send .带close 那种生成器
生成器表达式 就是列表推导式中的[]方括号 改成()圆括号
itertools 模块 (构造各种生成器)
- islice: 窗口迭代器
itertools.islice(可迭代对象,阈值,参数2默认None)
返回迭代器
就像在一个列表中的滑动窗口。- tee: 往返迭代器
itertools.tee(可迭代对象)
返回多个相同的迭代器,由于tee内部是缓存机制(一个迭代对象被消耗完 ,多个迭代器会同时被增加新值)适用于交替迭代和同步迭代,不适合依次迭代(消耗过多内存)。参考资料- groupby 类似于 unix中的uniq
itertools.groupby(可迭代对象)
是一个同时返回两个值的迭代器,第一个值是KEY 第二个值是被分组好的可迭代对象 (P36)- 其他itertools 函数参考链接
就是一个以函数为参数的函数,其返回值仍然是个函数,作用是增强,或者改变 参数函数的功能。使用装饰器语法使得代码更易读。
def mydecorator(function):
def _mydecorator(*arg,**kw):
# 加入函数运行前做的事(AA)
res = function(*arg,**kw)
# 加入函数运行前做的事(BB)
return res
return _mydecorator
还可以在这个上面再包一层,让装饰器带函数 详见(p39)
就是常用的 with file('/demo.txt') as f:...
这种就是上下文,实际上就是 try … finally 关闭资源。
定义时候 一个类 实现 __ enter__(self)
方法和 __exit__(self,excepion_type,exception_value,excepion_traceback)
就可以使用with协议,exit返回true将不抛出异常
from contextlib import contextmanager
dosomeprepare try: yeild except Exception e : dosomenote rasie e else: dosomeclose
语式来替代enter 和exit语句