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
发布历史:

取代者:
387

目录

摘要

本PEP描述了Python 2标准库中应与Python的早期版本保持向后兼容的包和模块。如果一个包未在此处列出,则它只需与其分发的Python版本兼容即可。

本PEP与Python 3标准库无关。

基本原理

作者们有各种理由说明为什么包和模块应继续与Python的早期版本一起工作。为了在推进标准库其余部分的同时保持这些模块的向后兼容性,有必要知道哪些模块可以修改,哪些模块应使用旧的以及可能已弃用的功能。

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

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

当发布Python的主要版本时,会创建一个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版本 备注
2到3 Benjamin Peterson 2.5
bsddb
  • Greg Smith
  • Barry Warsaw
2.1
编译器 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一起分发,直到Python 2.3,它必须保持与Python 2.1兼容。email包版本3将随Python 2.4分发,并且只需要与Python 2.3兼容。
  2. 规范更新将作为错误修复并反向移植。Python 2.3兼容性将至少保持到Python 2.4。对于Python 2.5,将重新审视此决定,除非出现令人信服的优势,否则不会更改。
  3. pybench位于Tools/目录下。为了能够比较Python版本之间的性能,需要与旧的Python版本兼容。新的测试中仍可以使用新功能,然后可以将其配置为在旧Python版本中通过工具导入时正常失败。

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

最后修改: 2024-10-10 20:00:57 GMT