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

Python 增强提案

PEP 291 – Python 2 标准库的后向兼容性

作者:
Neal Norwitz <nnorwitz at gmail.com>
状态:
最终版
类型:
信息性
创建:
2002年6月6日
Python 版本:
2.3
更新历史:


目录

摘要

本 PEP 描述了 Python 2 标准库中应该保持与之前 Python 版本后向兼容的包和模块。如果某个包未在此列出,则它只需与它所发布的 Python 版本兼容即可。

本 PEP 不影响 Python 3 标准库。

基本原理

作者有各种原因需要使包和模块继续与之前版本的 Python 兼容。为了在向前推进标准库其余部分的同时保持这些模块的后向兼容性,有必要知道哪些模块可以修改,哪些模块应该使用旧的(可能已弃用)的功能。

通常,作者应尝试使更改与之前发布的 Python 版本后向兼容,以便更容易地将 bug 修复移植回旧版本。

除了将包或模块列入本 PEP 中之外,作者还必须在每个文件的顶部添加一条注释,记录兼容性要求。

当发布 Python 的主要版本时,会为持续维护和 bug 修复版本创建 Subversion 分支。分支上的包版本可能具有与主干(即当前最新开发版本)上的相同包不同的兼容性要求。在适当的情况下,这些分支兼容性将在下面列出。

避免的功能

以下列表包含为了保持与每个 Python 版本的后向兼容性而应避免的常见功能。此列表并不完整!它仅作为一般指南。

请注意,以下功能是在列出的版本之后的版本中实现的。例如,在 1.5.2 旁边列出的功能是在 2.0 中实现的。

版本 避免的功能
1.5.2 字符串方法、Unicode、列表推导式、增强赋值(例如,+=)、zip()、import x as y、dict.setdefault()、print >> f、调用 f(*args, **kw),以及所有以下功能
2.0 嵌套作用域、丰富比较、函数属性,以及所有以下功能
2.1 使用 object 或新式类、迭代器、使用生成器、嵌套作用域或 // 而不使用 from __future__ import … 语句、isinstance(X, TYP) 其中 TYP 是类型元组,以及所有以下功能
2.2 bool、True、False、basestring、enumerate()、{}.pop()、PendingDeprecationWarning、通用换行符,以及所有以下功能,以及所有以下功能
2.3 生成器表达式、多行导入、装饰器、int/long 统一、set/frozenset、reversed()、sorted()、”“.rsplit(),以及所有以下功能
2.4 with 语句、条件表达式、组合 try/except/finally、相对导入、yield 表达式或 generator.throw/send/close(),以及所有以下功能
2.5 没有 from __future__ import 的 with 语句、io 模块、str.format()、except as、bytes、b'' 字面量、property.setter/deleter

后向兼容的包、模块和工具

包/模块 维护者 Python 版本 备注
2to3 Benjamin Peterson 2.5
bsddb
  • Greg Smith
  • Barry Warsaw
2.1
compiler Jeremy Hylton 2.1
decimal Raymond Hettinger 2.3 [2]
distutils Tarek Ziade 2.3
email Barry Warsaw 2.1 / 2.3 [1]
pkgutil Phillip Eby 2.3
platform Marc-Andre Lemburg 1.5.2
pybench Marc-Andre Lemburg 1.5.2 [3]
sre Fredrik Lundh 2.1
subprocess Peter Astrand 2.2
wsgiref Phillip J. Eby 2.1
xml (PyXML) Martin v. Loewis 2.0
xmlrpclib Fredrik Lundh 2.1
工具 维护者 Python 版本

备注

  1. email 包版本 2 与 Python 2.3 之前的 Python 版本一起发布,并且必须保持与 Python 2.1 的兼容性。email 包版本 3 将与 Python 2.4 一起发布,并且只需要与 Python 2.3 兼容。
  2. 规范更新将被视为 bug 修复并进行移植。将至少为 Python 2.4 保持 Python 2.3 兼容性。将在 Python 2.5 中重新审视此决定,除非出现令人信服的优势才会更改。
  3. pybench 位于 Tools/ 目录下。需要与旧版 Python 版本兼容,以便能够比较不同 Python 版本之间的性能。新功能仍然可以在新测试中使用,然后可以通过工具在旧版 Python 版本中配置这些测试以在导入时优雅地失败。

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

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