已棄用項目

Pending removal in Python 3.15

  • 引入系統 (import system):

    • 在模組上設定 __cached__ 而沒有設定 __spec__.cached 的做法已被棄用。在 Python 3.15 中,引入系統或標準函式庫將不再設定或考慮 __cached__。(gh-97879)

    • 在模組上設定 __package__ 而沒有設定 __spec__.parent 的做法已被棄用。在 Python 3.15 中,引入系統或標準函式庫將不再設定或考慮 __package__。(gh-97879)

  • ctypes

    • 自 Python 3.13 起,未記錄的 ctypes.SetPointerType() 函式已被棄用。

  • http.server

    • 過時且很少使用的 CGIHTTPRequestHandler 自 Python 3.13 起已被棄用。不存在直接的替代。任何東西都比 CGI 更好地將 Web 伺服器與請求處理程序介接起來。

    • 自 Python 3.13 起,python -m http.server 命令列介面的 --cgi 旗標已被棄用。

  • locale

  • pathlib

  • platform

    • 自 Python 3.13 起,java_ver() 已被棄用。此函式僅對 Jython 支援有用,具有令人困惑的 API,基本上未經測試。

  • threading

    • RLock() 在 Python 3.15 中將不接受任何引數。自 Python 3.14 起,傳遞任何引數的用法已被棄用,因為 Python 版本不允許任何引數,但 C 版本允許任意數量的位置或關鍵字引數,並忽略每個引數。

  • types

  • typing

    • The undocumented keyword argument syntax for creating NamedTuple classes (for example, Point = NamedTuple("Point", x=int, y=int)) has been deprecated since Python 3.13. Use the class-based syntax or the functional syntax instead.

    • 自 Python 3.13 起,typing.no_type_check_decorator() 裝飾器函式已被棄用。在 typing 模組中使用了八年之後,它尚未得到任何主要型別檢查器的支援。

  • wave

Python 3.16 中待移除的項目

  • 引入系統 (import system):

    • 在模組上設定 __loader__ 而沒有設定 __spec__.loader 的做法將於 Python 3.16 被棄用。在 Python 3.16 中,引入系統或標準函式庫將不再設定或考慮 __loader__

  • array

    • 自 Python 3.3 起,'u' 格式碼 (wchar_t) 在文件中已被棄用,自 Python 3.13 起在 runtime 已被棄用。請使用 'w' 格式碼 (Py_UCS4) 來取代 Unicode 字元。

  • asyncio

  • builtins

    • 自 Python 3.12 起,布林型別的位元反轉 ~True~False 已被棄用,因為它會產生不預期且不直觀的結果(-2-1)。使用 not x 代替布林值的邏輯否定。在極少數情況下,你需要對底層的整數進行位元反轉,請明確轉換為 ~int(x) (~int(x))。

  • shutil

    • 自 Python 3.14 起,ExecError 例外已被棄用。自 Python 3.4 以來,它尚未被 shutil 中的任何函式使用,現在是 RuntimeError 的別名。

  • symtable

  • sys

  • tarfile

    • 自 Python 3.13 起,未以文件記錄和未被使用的 TarFile.tarfile 屬性已被棄用。

Pending removal in future versions

以下 API 將在未來被移除,雖然目前尚未安排移除日期。

  • argparse:

    • Nesting argument groups and nesting mutually exclusive groups are deprecated.

    • Passing the undocumented keyword argument prefix_chars to add_argument_group() is now deprecated.

    • The argparse.FileType type converter is deprecated.

  • array'u' 格式碼 (gh-57281)

  • builtins

    • bool(NotImplemented)

    • 產生器:throw(type, exc, tb)athrow(type, exc, tb) 簽名已被棄用:請改用 throw(exc)athrow(exc),為單引數簽名。

    • 目前 Python 接受數值字面值後面立即接關鍵字,例如 0in x1or x0if 1else 2。它讓表達式模糊且容易混淆,如 [0x1for x in y](可以解釋為 [0x1 for x in y][0x1f or x in y])。如果數值字面值後立即接 andelseforifinisor 之一的關鍵字,則會引發語法警告。在未來版本中,它將被更改為語法錯誤。(gh-87999)

    • __index__()__int__() 方法回傳非 int 型別的支援:這些方法將需要回傳 int 的嚴格子類別實例。

    • 回傳 float 嚴格子類別 __float__() 方法的支援:這些方法將需要回傳 float 的實例。

    • 回傳 complex 嚴格子類別 __complex__() 方法的支援:這些方法將需要回傳 complex 的實例。

    • int() 委派給 __trunc__() 方法。

    • complex() 建構子中將複數作為 realimag 引數傳遞現在已被棄用;它應該只作為單個位置引數傳遞。 (由 Serhiy Storchaka 於 gh-109218 貢獻。)

  • calendarcalendar.Januarycalendar.February 常數已被棄用並被 calendar.JANUARYcalendar.FEBRUARY 取代。 (由 Prince Roshan 於 gh-103636 貢獻。)

  • codeobject.co_lnotab:請改用 codeobject.co_lines() 方法。

  • datetime

    • utcnow():請改用 datetime.datetime.now(tz=datetime.UTC)

    • utcfromtimestamp():請改用 datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)

  • gettext:複數值必須是整數。

  • importlib

    • load_module() method:請改用 exec_module()

    • cache_from_source() debug_override 參數已被棄用:請改用 optimization 參數。

  • importlib.metadata

    • EntryPoints 元組介面。

    • 回傳值上的隱式 None

  • logging:自 Python 3.3 起,warn() 方法已被棄用,請改用 warning()

  • mailbox:已棄用 StringIO 輸入和文本模式,請改用 BytesIO 和二進位模式。

  • os:在多執行緒行程中呼叫 os.register_at_fork()

  • pydoc.ErrorDuringImportexc_info 參數的元組值已被棄用,請用例外實例。

  • re:現在對正規表示式中的數值群組參照和群組名稱用了更嚴格的規則。現在只有 ASCII 數碼序列被接受作為數值參照。位元組模式和替換字串中的群組名稱現在只能包含 ASCII 字母、數碼和底線。(由 Serhiy Storchaka 於 gh-91760 貢獻。)

  • sre_compilesre_constantssre_parse 模組。

  • shutilrmtree()onerror 參數在 Python 3.12 中已被棄用;請改用 onexc 參數。

  • ssl 選項和協定:

    • 不帶協定引數的 ssl.SSLContext 已被棄用。

    • ssl.SSLContextset_npn_protocols()selected_npn_protocol() 已被棄用:請改用 ALPN。

    • ssl.OP_NO_SSL* 選項

    • ssl.OP_NO_TLS* 選項

    • ssl.PROTOCOL_SSLv3

    • ssl.PROTOCOL_TLS

    • ssl.PROTOCOL_TLSv1

    • ssl.PROTOCOL_TLSv1_1

    • ssl.PROTOCOL_TLSv1_2

    • ssl.TLSVersion.SSLv3

    • ssl.TLSVersion.TLSv1

    • ssl.TLSVersion.TLSv1_1

  • sysconfig.is_python_build()check_home 參數已被棄用並被忽略。

  • threading 方法:

  • typing.Text (gh-92332)。

  • unittest.IsolatedAsyncioTestCase:從測試案例中回傳非 None 的值已被棄用。

  • urllib.parse 已棄用函式:請改用 urlparse()

    • splitattr()

    • splithost()

    • splitnport()

    • splitpasswd()

    • splitport()

    • splitquery()

    • splittag()

    • splittype()

    • splituser()

    • splitvalue()

    • to_bytes()

  • urllib.request:呼叫請求的 URLopenerFancyURLopener 風格已被棄用。請改用更新的 urlopen() 函式和方法。

  • wsgirefSimpleHandler.stdout.write() 不應該進行部分寫入。

  • xml.etree.ElementTree:已棄用對 Element 的真值測試。在未來版本中,它將始終回傳 True。請改用明確的 len(elem)elem is not None 測試。

  • zipimport.zipimporter.load_module() 已被棄用:請改用 exec_module()

C API deprecations

Pending removal in Python 3.15

Pending removal in future versions

下列 API 已被棄用並將會被移除,不過目前尚未訂定移除日期。