Python 3.10版本新增了哪些功能?
在本文中,我們將學習Python 3.10相比於3.9的新功能。讓我們看看這些功能:
帶括號的上下文管理器
現在支援在上下文管理器中使用括號來跨多行延續。這允許以類似於以前在import語句中可能的方式,將長上下文管理器的集合格式化成多行。
使用者定義的型別守衛
TypeGuard已新增到typing模組中,用於註釋型別守衛函式,並在型別縮小期間為靜態型別檢查器提供更多資訊。
改進的錯誤訊息
如果執行Python程式時出現錯誤,錯誤訊息現在將更加準確,並提供確切的錯誤資訊。
SyntaxError(語法錯誤)
當解析包含未關閉的括號或方括號的程式碼時,直譯器現在將包含未關閉括號或方括號的位置,而不是顯示SyntaxError: unexpected EOF while parsing或指向某些不正確的位置。
直譯器引發的SyntaxError異常現在將突出顯示構成語法錯誤本身的表示式的完整錯誤範圍,而不是僅突出顯示檢測到問題的位置。
IndentationError(縮排錯誤)
許多IndentationError異常現在包含更多關於什麼型別的塊需要縮排的上下文資訊。
精確的行號用於除錯
更精確和可靠的行號用於除錯、效能分析和程式碼覆蓋工具。跟蹤事件(帶有正確的行號)將為所有執行的程式碼行生成,並且僅為執行的程式碼行生成。
結構化模式匹配
結構化模式匹配已以match語句和具有關聯操作的case語句模式的形式新增。模式由序列、對映、原始資料型別以及類例項組成。模式匹配使程式能夠從複雜的資料型別中提取資訊,根據資料結構進行分支,並根據不同形式的資料應用特定操作。
增強的模組
以下模組透過新功能、新方法等進行了增強。
array − array.array的index()方法現在具有可選的start和stop引數。
base64 − 添加了base64.b32hexencode()和base64.b32hexdecode()以支援帶有擴充套件十六進位制字母表的Base32編碼。
bisect − 為bisect模組中的API添加了提供鍵函式的可能性。
contextlib − 添加了一個contextlib.aclosing()上下文管理器,以安全地關閉非同步生成器和表示非同步釋放資源的物件。
distutils − distutils包已棄用,將在Python 3.12中移除。
encodings − encodings.normalize_encoding()現在忽略非ASCII字元。