Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 404 – Python 2.8 未发布计划

作者:
Barry Warsaw <barry at python.org>
状态:
最终
类型:
信息性
主题:
发布
创建:
2011年11月9日
Python 版本:
2.8

目录

摘要

本文档描述了 Python 2.8 的未开发和未发布计划。

未发布管理者和团队

职位 姓名
2.8 未发布管理者 Cardinal Biggles

未发布计划

当前的未发布计划是

  • 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 *)仅允许在模块级代码中使用。

此外,标准库的一些区域已重新组织,以使命名方案更直观。一些很少使用的内置函数已重新定位到标准库模块。

迭代器和视图

许多 API 在 Python 2 中返回具体的列表,而在 Python 3 中现在返回迭代器或轻量级视图


来源:https://github.com/python/peps/blob/main/peps/pep-0404.rst

上次修改:2023-09-09 17:39:29 GMT