你可能会问的第一个问题就是:“我的软件应该支持Python的哪些版本?”这是一个好问题,因为Python的每个新版本都会在引入新功能的同时弃用一些旧功能。而且,Python 2.x和Python 3.x之间有着**巨大**的差别,这两个分支之间的变化如此巨大,以至于很难让代码同时兼容二者。本书后面的章节会详细讨论,而且在刚开始一个新项目的时候很难说哪个版本更合适。
下面是一些简短的回答。
- 2.5版本及更老的版本目前实际上已经废弃了,所以不需要再去支持它们。如果实在想支持这些较老的版本,要知道再让程序支持Python 3.x会更加困难。如果你确实有可能会遇到一些安装了Python 2.5的老系统,那很遗憾,真没什么好办法。
- 2.6版本越来越没活力,可以在某些比较老的操作系统(如Red Hat企业版Linux,即Red Hat Enterprise Linux)上发现。同时支持Python 2.6版本和更新的版本并不太难,但是,如果你认为自己的程序可能不需要在2.6版本上运行,那就没必要强迫自己支持它了。
- 2.7版本目前是也将依然是Python 2.x的最后一个版本。因为目前仍然有很多软件、库和开发人员在使用它,所以将其作为主要版本之一来支持是正确的选择。Python 2.7将被继续支持到2020年,所以它很可能不会很快消失。
- 3.0、3.1和3.2版本发布后都被快速地更替,并没有被广泛采用。如果你的代码已经支持2.7版本,再支持这几个版本的意义并不大。
- 3.4和3.5版本是Python 3最近发行的两个版本,也是应该重点支持的版本。Python 3.5代表这门语言的未来,所以除非正专注于兼容老的版本,否则都应该先确保代码能够运行在这两个最新版本上。
总而言之,只在确实需要(或者想自我挑战)的情况下支持2.6版本,必须支持2.7版本,如果想保证软件在可预见的未来也能运行,就需要也支持3.4及更高的版本。忽略那些更老的Python版本基本没什么问题,尽管同时支持所有这些版本是有可能的:CherryPy项目(<http://cherrypy.org>)支持Python 2.3及所有后续版本(<http://docs.cherrypy.org/stable/intro/install.html>)。
编写同时支持Python 2.7和3.x版本的程序的方法将在第15章介绍。某些方法在后续的示例代码中也会涉及,本书中的所有示例代码都同时支持这两个主要版本。
- 内容提要
- 中文版序
- 前言
- 第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章 延伸阅读
- 版权信息
- 版权声明
- 欢迎来到异步社区!
- 异步社区的来历
- 社区里都有什么?
- 购买图书
- 下载资源
- 与作译者互动
- 灵活优惠的购书
- 纸电图书组合购买
- 社区里还可以做什么?
- 提交勘误
- 写作
- 会议活动早知道
- 加入异步