第1章 项目开始 1
1.1 Python版本 1
1.2 项目布局 2
1.3 版本编号 3
1.4 编码风格与自动检查 5
1.5 Joshua Harlow访谈 8
第2章 模块和库 13
2.1 导入系统 13
2.2 标准库 17
2.3 外部库 18
2.4 框架 20
2.5 Doug Hellmann访谈 21
第3章 管理API变化 27
第4章 时区陷阱 35
第5章 文档 39
5.1 Sphinx和reST入门 40
5.2 Sphinx模块 41
5.3 扩展Sphinx 44
第6章 分发 47
6.1 简史 47
6.2 使用pbr打包 49
6.3 Wheel格式 51
6.4 包的安装 52
6.5 和世界分享你的成果 53
6.6 Nick Coghlan访谈 58
6.7 入口点 59
6.7.1 可视化的入口点 60
6.7.2 使用控制台脚本 61
6.7.3 使用插件和驱动程序 63
第7章 虚拟环境 67
第8章 单元测试 71
8.1 基础知识 71
8.2 fixture 78
8.3 模拟(mocking) 79
8.4 场景测试 83
8.5 测试序列与并行 87
8.6 测试覆盖 91
8.7 使用虚拟环境和tox 93
8.8 测试策略 97
8.9 Robert Collins访谈 98
第9章 方法和装饰器 101
9.1 创建装饰器 101
9.2 Python中方法的运行机制 107
9.3 静态方法 109
9.4 类方法 110
9.5 抽象方法 111
9.6 混合使用静态方法、类方法和抽象方法 112
9.7 关于super的真相 115
第10章 函数式编程 119
10.1 生成器 120
10.2 列表推导 124
10.3 函数式函数的函数化 125
第11章 抽象语法树 133
11.1 用抽象语法树检查来扩展ake8 136
11.2 Hy 141
11.3 Paul Tagliamonte访谈 143
第12章 性能与优化 149
12.1 数据结构 149
12.2 性能分析 151
12.3 有序列表和二分查找 156
12.4 namedtuple和slots 158
12.5 memoization 163
12.6 PyPy 165
12.7 通过缓冲区协议实现零复制 166
12.8 Viictor Stinner访谈 171
第13章 扩展与架构 175
13.1 多线程的注意事项 175
13.2 多进程与多线程 177
13.3 异步和事件驱动架构 179
13.4 面向服务架构 181
第14章 RDBMS和ORM 185
14.1 用Flask和PostgreSQL流化数据 188
14.2 Dimitri Fontaine访谈 193
第15章 Python 3支持策略 201
15.1 语言和标准库 202
15.2 外部库 205
15.3 使用six 205
第16章 少即是多 209
16.1 单分发器 209
16.2 上下文管理器 214
第17章 延伸阅读 217