《流畅的Python》读书笔记

第一部分:序幕

第1章:Python数据模型

通过实现特殊方法,自定义数据类型可以表现得和内置类型一样;

__repr__方便调试和记录日志,__str__方便用户看;

序列数据类型特殊方法使用最多;

 


第二部分:数据结构

第2章:序列构成的数组

系列类型可分为 可变和不可变、扁平序列和容器序列;

列表推导生成器表达式提供了灵活构建和初始化序列的方式;

元组、切片、array.array、collections.deque。。。

 

第3章:字典和集合

字典算是Python的基石;除dict外,有其他好用的如defaultdict、OrdereDict、ChainMap、Counter(属于collections模块);

映射类型两个方法:setdefault、update

映射类型API中:__missing__

dict、set背后的散列表效率很高;

 

第4章:文本和字节序列

一个字符不等于一个字节;

二进制数据类型:bytes、bytearray、memoryview;UnicodeEncodeError、UnicodeDecodeError、SyntaxError;

 


第三部分:把函数视作对象

第5章:一等函数

把函数赋值给变量、传给其他函数、存储在数据结构中、访问函数的属性;

高阶函数、列表推导、规约函数;

python有7中可调用对象,从lambda表达式创建的简单函数到实现__call__方法的类实例;

 

第6章:使用一等函数实现设计模式

可使用一等函数简化模式实现;

 

第7章:函数装饰器和闭包

参数化装饰器基本上都涉及至少两层嵌套函数;

要理解装饰器,需要区分导入时和运行时、知道变量作用域、闭包和新增的nonlocal声明;

 


第四部分:面向对象惯用法

第8章:对象引用、可变性和垃圾回收

每个Python对象都有标识、类型和值;

变量保存的是引用;

CPython中对象的引用计数归零后会被立即销毁;

 

第9章:符合Pyhton风格的对象

简洁胜于复杂;

使用__slots__节省内存;

要构建符合Python风格的对象,就要观察真正的Python对象;

 

第10章:序列的修改、散列和切片

myseq[a:b:c]原理:创建slice(a, b, c)对象,交给__getitem__方法处理;

模仿Python标准对象行为;

 

第11章:接口:从协议到抽象基类

抽象基类动态特性:虚拟子类、使用__subclasshook__方法动态识别子类;

 

第12章:继承的优缺点

内置类型的原生方法使用C语言实现,不会调用子类中覆盖的方法,极少数例外;

多重继承是双刃剑;__mro__类属性中蕴藏方法解析顺序;

 

第13章:正确重载运算符

进制重载内置类型的运算符,而且限于重载现有的运算符(is、and、or、not例外);

 


第五部分:控制流程

第14章:可迭代对象、迭代器和生成器

iter函数;

 

第15章:上下文管理器和else模块

上下文管理器和with:管理文件,其他用途、、

contextlib模块里的函数,@contextmanager装饰器

 

第16章:协程

通过客户调用.send(...)方法发送数据或使用yeild from结构驱动的生成器函数;

 

第17章:使用期物处理并发

concurrent.futures,asyncio.Future;

多线程和多进程并发的底层实现;

 

第18章:使用asyncio包处理并发

使用yeild from、协程、期物和asyncio时间循环做并发编程;

 

 


第六部分:元编程

第19章:动态属性和特性

动态属性编程;

使用特性处理删除属性;

 

第20章:属性描述符

托管属性和存储属性;

描述符类与使用函数式编程方式构建的特性工厂函数;

 

第21章:类元编程

类元编程指动态创建类或定制类;

抽象基类、元类;

posted @ 2017-09-26 21:03  heaventouch  阅读(591)  评论(0编辑  收藏  举报