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 | 
 | 2.1 | |
| 编译器 | Jeremy Hylton | 2.1 | |
| decimal | Raymond Hettinger | 2.3 | [2] | 
| distutils | Tarek Ziade | 2.3 | |
| 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版本 | 
|---|---|---|
| 无 | 
备注
- email包版本2随Python一起分发,直到Python 2.3,它必须保持与Python 2.1兼容。email包版本3将随Python 2.4分发,并且只需要与Python 2.3兼容。
- 规范更新将作为错误修复并反向移植。Python 2.3兼容性将至少保持到Python 2.4。对于Python 2.5,将重新审视此决定,除非出现令人信服的优势,否则不会更改。
- pybench位于Tools/目录下。为了能够比较Python版本之间的性能,需要与旧的Python版本兼容。新的测试中仍可以使用新功能,然后可以将其配置为在旧Python版本中通过工具导入时正常失败。
版权
本文档已置于公共领域。
来源: https://github.com/python/peps/blob/main/peps/pep-0291.rst
最后修改: 2024-10-10 20:00:57 GMT