Python 3.11 帶來了性能改進、緩存重新設計等

蟒蛇

Python 是一種高級解釋性編程語言,其哲學強調其代碼的可讀性。

經過一年的開發,Python 程式語言的新版本 3.11正式發布。新版本將獲得一年半的支持,之後還將發布補丁程序,持續三年半以修復漏洞。

同時,Python 3.12 分支的 alpha 測試也開始了(根據新的開發計劃,新分支的工作在前一個分支發布前五個月開始,並在下一個版本發佈時達到 alpha 測試階段)。

Python 3.12 分支的 alpha 版本將持續七個月,在此期間將添加新功能並修復錯誤。 之後,將進行為期三個月的 Beta 測試,在此期間將禁止添加新功能,並將全力關注錯誤修復。 發布前的最後兩個月,該分支將處於發布候選階段,此時將進行最終穩定。

Python 3.11 主要新特性

新版本在效能最佳化方面進行了大量改進。新分支整合了與函數呼叫加速和內聯部署、典型操作使用快速解釋器以及 Cinder 和 HotPy 專案開發的最佳化相關的變更。根據工作負載的不同,程式碼執行速度提升了 10% 到 60%。在 pyperformance 測試套件上的平均效能提升了 25%。

字節碼快取機制經過重新設計,可將解釋器啟動時間縮短 10-15%。現在,包含字節碼的物件由解釋器靜態分配,省去了從快取中解碼字節碼以及將包含字節碼的物件轉換為動態記憶體放置格式的步驟。

新增了對異常組的支持,使程式能夠同時產生和處理多個不同的異常。新增了異常類型 ExceptionGroup 和 BaseExceptionGroup,用於對多個異常進行分組和合併;此外,還添加了表達式“except*”,用於區分組內的不同異常。

新增了一種特殊的 LiteralString 類型,它只能包含與 LiteralString 類型相容的字串字面量(即裸字串和 LiteralString 類型的字串,但不能包含任意字串或組合的 str 類型字串)。 LiteralString 類型可用於限制傳遞給函數的字串參數,防止在可能出現安全漏洞的情況下(例如,在產生 SQL 查詢或 shell 命令的字串時)對字串的任意部分進行替換。

此外,還提供了以「必要」和「非必要」標記來標記類型化字典 (TypedDict) 中各個元素的功能,以確定必填欄位和可選欄位(預設情況下,如果 total 參數未設定為 False,則所有聲明的欄位都是必填的)。

新增了類別、方法和函數裝飾器 @dataclass_transform;指定後,靜態類型檢查器會將物件視為使用了裝飾器 @dataclasses.dataclass。

在此新版本中突出的其他更改包括:

  • 添加了在正則表達式中使用原子分組 ((?>...)) 和嫉妒(佔有)量詞(*+、++、?+、{m,n}+)的能力。
  • 添加了 TypeVarTuple 類型,它允許使用變量泛型,這與 TypeVar 不同,TypeVar 涵蓋的不是一種類型,而是任意數量的類型。
  • 標準庫包括帶有解析 TOML 格式的函數的 tomllib 模塊。
  • add_note() 方法已添加到 BaseException 類,它允許將文本註釋附加到異常,例如添加在引發異常時不可用的上下文信息。
  • 添加了一個特殊類型 Self 來表示當前的私有類。 Self 可用於以比使用 TypeVar 更簡單的方式註釋返回類實例的方法。
  • 添加了“-P”命令行選項和 PYTHONAFEPATH 環境變量以禁用將潛在不安全文件路徑自動連接到 sys.path。
  • Windows 平台的 py.exe 實用程序已得到顯著增強,以支持“-V:”語法。 / “ 此外 ”- . »。
  • 許多 C API 宏已轉換為常規或靜態內聯函數
  • uu、cgi、pipes、crypt、aifc、chunk、msilib、telnetlib、audiop、nis、sndhdr、imghdr、nntplib、spwd、xdrlib、cgitb、mailcap、ossaudiodev 和 sunau 模塊已被棄用,並將從 Python 中刪除。 3.13 發布。
  • 刪除了 PyUnicode_Encode* 函數。
  • TaskGroup 類被添加到 asyncio 模塊中,並實現了等待任務組完成的異步上下文管理器。
  • 使用 create_task() 方法將任務添加到組中。

最後,如果您有興趣了解更多相關信息,可以點擊以下連結查看詳情。


在 Google 中將其新增為首選來源