Python 3.15 正式發布,由 3.14 和 3.15 發布經理 Hugo van Kemenade 編纂了「Python 3.15 新功能」指南。此次更新引入了多項重要功能,包括基於 PEP 810 的顯式延遲匯入(Explicit lazy imports)、基於 PEP 798 的列表解析式解包語法,以及名為 Tachyon 的高頻統計取樣分析器(profiling.sampling)。此外,原有的追蹤分析器 cProfile 已更名為 profiling.tracing。

顯式延遲匯入允許開發者使用 `lazy import` 語法,將模組的載入延遲至程式碼中首次使用該符號時。這對於解決安裝包含重型依賴(如 sentence_transformers)的插件時導致的 CLI 工具啟動延遲問題特別有幫助。列表解析式解包語法則允許在列表、集合和字典解析式中直接使用 `*` 和 `**` 進行解包,簡化了巢狀迴圈的寫法。

新增的 Tachyon 取樣分析器透過定期捕捉執行中程序的堆疊追蹤來計算函數的時間消耗,具有極低的開銷,且無需預先對系統進行插樁。開發者可透過 PID 附加到現有的 Python 3.15 程序以收集樣本,並生成報告、火焰圖(flame graphs)、熱力圖(heat maps),甚至輸出可在 Firefox Profiler UI 中查看的格式。

關於效能,Miguel Grinberg 的測試顯示 Python 3.15 的整體效能與 3.14 大致相同,僅在啟用實驗性 JIT 編譯器時,於 Fibonacci 測試中觀察到 1.2 倍的性能提升,這是首次觀察到 JIT 帶來的顯著性能增益。相比之下,3.14 相較於 3.13 在更多類別中曾有顯著提升。

隨著 Python 3.15 的發布,2021 年發布的 Python 3.10 正式終止支援。這意味著開發者可以開始依賴 Python 3.11 的功能,例如 `tomllib` 模組、`asyncio.TaskGroup` 和 `timeout()`、`datetime.UTC` 別名,以及 SQLite 支援的改進(如 `setlimit()`、`create_window_function()`、`blobopen()` 和移除授權器的功能)。

事件背景

Python 3.10 於 2021 年發布,現已正式終止支援(EOL)。Python 3.11 引入了 `tomllib` 標準庫模組、`asyncio.TaskGroup` 和 `timeout()` 等新功能,以及 `datetime.UTC` 作為 `datetime.timezone.utc` 的別名。在 SQLite 支援方面,Python 3.11 新增了 `setlimit()` 和 `getlimit()` 以設定 SQLite 執行時限制,`create_window_function()` 以建立自訂視窗函數,`blobopen()` 以高效讀寫大型 BLOB 值,並允許透過 `set_authorizer(None)` 移除 SQLite 授權器。此外,Python 3.11 還對類型提示系統進行了改進。PEP 798 提出的列表解析式解包語法是對 2015 年 Python 3.5 中 PEP 448 解包語法的擴展。