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 未发布经理 卡迪纳尔·比格尔斯

未发布日程

当前的未发布日程是

  • 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