下面是本书每一部分的主题。
第一部分
第一部分只有单独的一章, 讲解的是 Python 的数据模型(data model) , 以及如何为
了保证行为一致性而使用特殊方法(比如 __repr__) , 毕竟 Python 的一致性是出了名
的。 其实整本书几乎都是在讲解 Python 的数据模型, 第 1 章算是一个概览。
第二部分
第二部分包含了各种集合类型: 序列(sequence) 、 映射(mapping) 和集合
(set) , 另外还提及了字符串(str) 和字节序列(bytes) 的区分。 说起来, 最后这一
点也是让亲者(Python 3 用户) 快, 仇者(Python 2 用户) 痛的一个关键, 因为这个区分
致使 Python 2 代码迁移到 Python 3 的难度陡增。 第二部分的目标是帮助读者回忆起 Python
内置的类库, 顺带解释这些类库的一些不太直观的地方。 具体的例子有 Python 3 如何在我
们观察不到的地方对 dict 的键重新排序, 或者是排序有区域(locale) 依赖的字符串时
的注意事项。 为了达到本部分的目标, 有些地方的讲解会比较大而全, 像序列类型和映射
类型的变种就是这样; 有时则会写得很深入, 比方说我会对 dict 和 set 底层的散列表进
行深层次的讨论。
第三部分
如何把函数作为一等对象(first-order object) 来使用。 第三部分首先会解释前面这句话是什么意思, 然后话题延伸到这个概念对那些被广泛使用的设计模型的影响, 最后读者
会看到如何利用闭包(closure) 的概念来实现函数装饰器(function decorator) 。 这一部
分的话题还包括 Python 的这些基本概念: 可调用(callable) 、 函数属性(function
attribute) 、 内省(introspection) 、 参数注解(parameter annotation) 和 Python 3 里新出现
的 nonlocal 声明。
第四部分
到了这里, 书的重点转移到了类的构建上面。 虽然在第二部分里的例子里就有类声明
(class declaration) 的出现, 但是第四部分会呈现更多的类。 和任何面向对象语言一样,
Python 还有些自己的特性, 这些特性可能并不会出现在你我学习基于类的编程的语言中。
这一部分的章节解释了引用(reference) 的原理、 “可变性”的概念、 实例的生命周期、 如
何构建自定义的集合类型和 ABC、 多重继承该怎么理顺、 什么时候应该使用操作符重载
及其方法。
第五部分
Python 中有些结构和库不再满足于诸如条件判断、 循环和子程序(subroutine) 之类的
顺序控制流程, 第五部分的笔墨会集中在这些构造和库上。 我们会从生成器(generator)
起步, 然后话题会转移到上下文管理器(context manager) 和协程(coroutine) , 其中会
涵盖新增的功能强大但又不容易理解的 yield from 语法。 这一部分以并发性和面向事件
的 I/O 来结尾, 其中跟并发性相关的是 collections.futures 这个很新的包, 它借助
futures 包把线程和进程的概念给封装了起来; 而跟面向事件 I/O 相关的则是 asyncio,
它的背后是基于协程和 yield from 的 futures 包。
第六部分
第六部分的开头会讲到如何动态创建带属性的类, 用以处理诸如 JSON 这类半结构化
的数据。 然后会从大家已经熟悉的特性(property) 机制入手, 用描述符从底层来解释
Python 对象属性的存取。 同时, 函数、 方法和描述符的关系也会被梳理一遍。 第六部分会
从头至尾地实现一个字段验证器, 在这个过程中我们会遇到一些微妙的问题, 然后在最后
一章中就自然引出像类装饰器(class decorator) 和元类(metaclass) 这些高级的概念。
0
0
19.39MB
2017-11-22
9