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

Python 增強提案 (Python Enhancement Proposals)

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 版本保持向後相容,以便讓錯誤修正(bug fixes)的後移(backport)更加容易。

除了套件或模組被列入本 PEP 之外,作者還必須在每個檔案的頂部添加註釋,記錄其相容性要求。

當 Python 的主要版本發佈時,會建立一個 Subversion 分支以進行持續維護和錯誤修正版本發佈。分支上的套件版本可能與主幹(即目前的尖端開發版本)上的相同套件具有不同的相容性要求。在適當情況下,這些分支的相容性會列在下方。

應避免使用的特性

下列清單包含為保持與各版本 Python 的向後相容性而應避免使用的常見特性。此清單並不完整!僅作為一般指引之用。

請注意,下列特性是在所列版本之後的版本中實現的。例如,列在 1.5.2 旁的特性是在 2.0 中實現的。

版本 應避免使用的特性
1.5.2 字串方法、Unicode、串列推導式(list comprehensions)、增量賦值(例如 +=)、zip()、import x as y、dict.setdefault()、print >> f、呼叫 f(*args, **kw),以及下方所有特性
2.0 巢狀作用域(nested scopes)、富比較(rich comparisons)、函式屬性,以及下方所有特性
2.1 使用 object 或新式類別(new-style classes)、迭代器(iterators)、使用生成器(generators)、巢狀作用域,或在沒有 from __future__ import … 語句的情況下使用 //、isinstance(X, TYP) 其中 TYP 為類型元組,以及下方所有特性
2.2 bool、True、False、basestring、enumerate()、{}.pop()、PendingDeprecationWarning、通用換行符(Universal Newlines),以及下方所有特性
2.3 生成器運算式、多行匯入、裝飾器(decorators)、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 版本
None

備註

  1. email 套件第 2 版隨 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