PEP 404 – Python 2.8 未发布日程
- 作者:
- Barry Warsaw <barry at python.org>
- 状态:
- 最终版
- 类型:
- 信息性
- 主题:
- 发布
- 创建日期:
- 2011年11月9日
- Python 版本:
- 2.8
摘要
本文档描述了 Python 2.8 的未开发和未发布日程。
未发布经理和团队
| 职位 | 名称 |
|---|---|
| 2.8 未发布经理 | 卡迪纳尔·比格尔斯 |
未发布日程
当前的未发布日程是
- 2.8 最终版 永不
官方声明
第六条规则:没有官方的 Python 2.8 版本。永远不会有官方的 Python 2.8 版本。它是一个已取消的版本。Python 2.7 是 Python 2 开发线的终点。
升级路径
从 Python 2.7 升级的官方路径是到 Python 3。
现在,来点完全不同的
说正经的,有重要原因说明为什么不会有官方的 Python 2.8 版本,以及为什么您应该计划迁移到 Python 3。
Python(撰写本文时)已有20多年的历史,Guido 和社区在这些年中学到了很多。Guido 对 Python 3 的最初设想是主要通过更改语言来消除先前版本中出现的缺陷。Python 3 并非完全重新设计,而是语言的演变,虽然明确放弃了与 Python 2 的完全向后兼容性,但也不接受语法或语义上的无谓更改。在大多数情况下,Python 2 代码可以相当容易地转换为 Python 3,有时甚至可以通过 2to3 等工具进行完全机械化的转换(语言中也存在一个非平凡的子集,可以在 2.7 和 3.x 上无需修改地运行)。
由于维护多个版本的 Python 会显著消耗 Python 开发人员的资源,并且 Python 3 中包含的语言和库的改进非常重要,因此决定以 Python 2.7 结束 Python 2 系列。因此,所有新开发都发生在 Python 3 的开发线中,并且永远不会有官方的 Python 2.8 版本。但是,Python 2.7 将比通常的时间更长地得到维护。
以下是 Python 3 中重大改进的一些亮点。您可以更详细地阅读有关 Python 2 和 Python 3 之间差异的信息。还有许多关于从 Python 2 移植到 Python 3 的优秀指南。
字符串和字节
Python 2 的基本原始字符串称为 8 位字符串,它们在 Python 2 中同时扮演 ASCII 文本和字节序列的双重角色。虽然 Python 2 也有 unicode 字符串类型,但核心字符串类型的基本歧义,加上 Python 2 在两者结合时默认支持从 8 位字符串自动强制转换为 unicode 对象的行为,常常导致 UnicodeError。Python 3 的标准字符串类型是基于 Unicode 的,并且 Python 3 增加了专用的字节类型,但关键是,不提供字节和 unicode 字符串之间的自动强制转换。语言最接近隐式强制转换的是一些基于文本的 API,如果未明确指定编码,则它们会假定默认编码(通常是 UTF-8)。因此,核心解释器、其 I/O 库、模块名称等在 unicode 字符串和字节之间的区别非常清晰。Python 3 的 unicode 支持甚至扩展到文件系统,因此原生支持非 ASCII 文件名。
这种字符串/字节的清晰度在将现有代码转换为 Python 3 时常常是一个难题,因为许多第三方库和应用程序本身在此区分上是模糊的。然而,一旦迁移,大多数 UnicodeError 都可以消除。
数字
Python 2 有两种基本的整数类型,一种是本机机器大小的 int 类型,另一种是任意长度的 long 类型。这些在 Python 3 中合并为单个 int 类型,类似于 Python 2 的 long 类型。
此外,整数除法现在对于非整数结果会产生浮点数。
类
Python 2 有两个核心类层次结构,通常称为经典类和新式类。后者允许继承自内置基本类型,支持基于描述符的工具(如内置的 property),并提供更合理和连贯的多重继承处理系统。Python 3 提供了完全放弃对经典类支持的机会,因此 Python 3 中的所有类都自动使用新式语义(尽管现在这是一个不恰当的称呼)。无需显式继承自 object 或设置默认元类型来启用它们(实际上,模块级别设置默认元类型不再受支持——默认元类型始终是 object)。
显式指定元类的机制也已更改,在类头行中使用 metaclass 关键字参数,而不是在类体中使用 __metaclass__ 魔术属性。
多种拼写
在 Python 2 中,许多构造存在多种拼写方式,例如 repr() 和反引号,或者两个不等式运算符 != 和 <>。在所有情况下,Python 3 都只选择了一种拼写方式并删除了另一种(例如,保留了 repr() 和 !=)。
导入
在 Python 3 中,包内隐式相对导入不再可用——只支持绝对导入和显式相对导入。此外,星形导入(例如 from x import *)只允许在模块级别代码中使用。
此外,标准库的某些区域已经重新组织,以使命名方案更直观。一些很少使用的内置函数已被重新定位到标准库模块中。
迭代器和视图
许多在 Python 2 中返回具体列表的 API,在 Python 3 中现在返回迭代器或轻量级视图。
版权
本文档已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0404.rst
最后修改时间:2025-02-01 08:55:40 GMT