已棄用項目

Python 3.14 中待移除的項目

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 旗標已被棄用。

  • importlib

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

  • locale

  • pathlib

  • platform

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

  • sysconfig

  • threading

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

  • types

  • typing

    • 用於建立NamedTuple 類別的未以文件記錄之關鍵字引數語法 (Point=NamedTuple("Point",x=int,y=int)) 已自 Python 3.13 棄用。請改用基於類別的語法或函式語法 (functional syntax)。

    • When using the functional syntax ofTypedDicts, failingto pass a value to thefields parameter (TD=TypedDict("TD")) orpassingNone (TD=TypedDict("TD",None)) has been deprecatedsince Python 3.13.UseclassTD(TypedDict):pass orTD=TypedDict("TD",{})to create a TypedDict with zero field.

    • 自 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)。使用notx 代替布林值的邏輯否定。在極少數情況下,你需要對底層的整數進行位元反轉,請明確轉換為~int(x) (~int(x))。

  • shutil

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

  • symtable

  • sys

  • tarfile

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

未來版本中的待移除項目

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

  • argparse:已棄用巢狀引數群組和巢狀互斥群組。

  • builtins

    • bool(NotImplemented)

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

    • 目前 Python 接受數值字面值後面立即接關鍵字,例如0inx1orx0if1else2。它讓表達式模糊且容易混淆,如[0x1forxiny](可以解釋為[0x1forxiny][0x1forxiny])。如果數值字面值後立即接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

  • 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

  • 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)elemisnotNone 測試。

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

C API 的棄用項目

Python 3.14 中待移除的項目

Python 3.15 中待移除的項目

未來版本中的待移除項目

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