# 前言
如果你正在读这本书,你肯定已经使用Python有一阵子了。你可能是通过一些文档学习的,钻研了一些已有的项目或者从头开发,但不管是哪种情况,你都已经在以自己的方式学习它了。直到3年前我加入OpenStack项目组之前,这其实也正是我个人熟悉Python的方法。
在此之前,我只是开发过一些“车库项目 [①](#anchor01)”级别的Python库或应用程序,而一旦你参与开发涉及数百名开发人员并有着上万个用户的软件或库时,情况就会有所不同。OpenStack平台有超过200万行Python代码,所有代码都需要精确、高效,并根据用户对云计算应用程序的需求进行任意扩展。在有了这一规模的项目之后,类似测试和文档这类问题就一定需要自动化,否则根本无法完成。
我刚开始加入OpenStack的时候,我认为自己已经掌握了不少Python知识,但这3年,在起步时无法想象其规模的这样一个项目上,我学到了更多。而且我还有幸结识了很多业界最棒的Python黑客,并从他们身上获益良多——大到通用架构和设计准则,小到各种有用的经验和技巧。我想通过本书分享一些我所学到的最重要的东西,以便你能构建更好的Python应用,并且是更加高效地构建。
本书是第3版,这一版根据第1版发布之后的一些新变化进行了更新。希望你能喜欢。
- - - - - -
[①](#ac01) 作者这里的意思是规模很小,比较业余的项目。——译者注
- 内容提要
- 中文版序
- 前言
- 第1章 项目开始
- 1.1 Python版本
- 1.2 项目布局
- 1.3 版本编号
- 1.4 编码风格与自动检查
- 1.5 Joshua Harlow访谈
- 第2章 模块和库
- 2.1 导入系统
- 2.2 标准库
- 2.3 外部库
- 2.4 框架
- 2.5 Doug Hellmann访谈
- 第3章 管理API变化
- Christophe de Vienne访谈
- 第4章 时区陷阱
- 第5章 文档
- 5.1 Sphinx和reST入门
- 5.2 Sphinx模块
- 5.3 扩展Sphinx
- 第6章 分发
- 6.1 简史
- 6.2 使用pbr打包
- 6.3 Wheel格式
- 6.4 包的安装
- 6.5 和世界分享你的成果
- 6.6 Nick Coghlan访谈
- 6.7 入口点
- 6.7.1 可视化的入口点
- 6.7.2 使用控制台脚本
- 6.7.3 使用插件和驱动程序
- 第7章 虚拟环境
- 第8章 单元测试
- 8.1 基础知识
- 8.2 fixture
- 8.3 模拟(mocking)
- 8.4 场景测试
- 8.5 测试序列与并行
- 8.6 测试覆盖
- 8.7 使用虚拟环境和tox
- 8.8 测试策略
- 8.9 Robert Collins访谈
- 第9章 方法和装饰器
- 9.1 创建装饰器
- 9.2 Python中方法的运行机制
- 9.3 静态方法
- 9.4 类方法
- 9.5 抽象方法
- 9.6 混合使用静态方法、类方法和抽象方法
- 9.7 关于super的真相
- 第10章 函数式编程
- 10.1 生成器
- 10.2 列表推导
- 10.3 函数式函数的函数化
- 第11章 抽象语法树
- 11.1 用抽象语法树检查来扩展flake8
- 11.2 Hy
- 11.3 Paul Tagliamonte访谈
- 第12章 性能与优化
- 12.1 数据结构
- 12.2 性能分析
- 12.3 有序列表和二分查找
- 12.4 namedtuple和slots
- 12.5 memoization
- 12.6 PyPy
- 12.7 通过缓冲区协议实现零复制
- 12.8 Victor Stinner访谈
- 第13章 扩展与架构
- 13.1 多线程的注意事项
- 13.2 多进程与多线程
- 13.3 异步和事件驱动架构
- 13.4 面向服务架构
- 第14章 RDBMS和ORM
- 14.1 用Flask和PostgreSQL流化数据
- 14.2 Dimitri Fontaine访谈
- 第15章 Python 3支持策略
- 15.1 语言和标准库
- 15.2 外部库
- 15.3 使用six
- 第16章 少即是多
- 16.1 单分发器
- 16.2 上下文管理器
- 第17章 延伸阅读
- 版权信息
- 版权声明
- 欢迎来到异步社区!
- 异步社区的来历
- 社区里都有什么?
- 购买图书
- 下载资源
- 与作译者互动
- 灵活优惠的购书
- 纸电图书组合购买
- 社区里还可以做什么?
- 提交勘误
- 写作
- 会议活动早知道
- 加入异步