python进阶

原书内容https://github.com/eastlakeside/interpy-zh

通过记录书本目录和大概内容做一个记录,方便以后回顾检索。

1*argv和**kwargv给函数输入可变参数argv为列表,kwargv为字典
2调试pdb代码层面下断点调试
3生成器定义了__iter__或__getitem__的为可迭代对象,定义了__next__的为迭代器yeild的用处
4Map, Filter and Reduce- map会将一个函数映射到一个列表上的所有函数,map(function_to_apply, list_of_outputs)。python3返回一个迭代器,list返回列表。
- filter过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表。
- reduce可以对一个列表进行一些计算并返回结果,类似归并。
5set数据结构set不能包含重复元素- 交集:set1.intersection(set2)
- 差集:set1.difference(set2)
6装饰器在执行一个函数期间需要执行其他操作,可以使用装饰器,更简单的就是定义装饰器然后使用@
7对象变动Mutation注意默认值,且python默认值只初始一次
8__slots__魔法节省小类的资源
9虚拟环境virtualenv
10Collectionsdefaultdict, counter, deque, namedtuple, enum.Enum
11枚举 Enumerate
12对象自省(introspection)dir, type, id, inspect
13推导式(comprehension)从一种数据序列构建另一种新的数据序列的结构体 eg. list, dict, set集合的推倒式为{},因为()生成的是迭代器
14异常try, except, finally, else不管触不触发异常都执行finally,异常不触发执行else
15lambda表达式lambda 参数: 操作(参数)
16一行式简易WebServer
漂亮的打印
脚本性能分析
csv转json
列表flat
一行构造器
python3 -m http.server
from pprint import pprint
python -m cPorfile my_script.py
...
17for else当循环完整执行后执行else语句
18使用C扩展Ctypes, SWING, Python/C API
19协程如果迭代器是数据的生成者,那么协程就是消费者line = (yield), 通过外部send给协程,就可以执行后续的if pattern in line,关闭用close()
20函数缓存函数缓存允许我们将一个函数对于给定参数的返回值缓存起来@lr_cache(maxsize=32), 清除缓存使用function.cache_clear()
21上下文管理(with语法)基于类实现__enter__和__exit__
处理异常
基于生成器@contextmanager
05-06 04:13