Python 3.11–5個新功能

Photo by Hitesh Choudhary on Unsplash

Python 3.11 快發布了,每個新版本都帶有新功能。在本文中,我們將介紹令人期待的 Python 3.11 的5個很酷的新功能。

  1. 比3.10版本快了60%

具體取決於工作負載。平均來說預期它在啟動和運行時間方面將比以前的版本快 25%。為了確認這一點,下方使用 Python 3.11 和 Python 3.10 運行了相同的程式碼,並比較了執行時間。運行時結果證實 Python 3.11 比以前的版本快得多。

Python 3.10 執行時間為 5.50秒

Python 3.10 執行時間為 2.14秒

2. 提示程式碼具體報錯的位置(超讚)

過去執行程式碼有錯誤時,只會提示在哪些文件、函數、行數報錯,有時候還不知道是錯在哪裡,這個版本將會直接指出錯誤的地方,相當實用。

3. 用self類型作為型態

在以前的版本中,如果想指定回傳class實例的類型,需要使用類型套件 TypeVar 。Python 3.11 添加了一種新的函式來取代這功能,而無需使用 TypeVar 。下面的第一段程式碼演示如何實現基於 TypeVar 的方法。第二個程式碼演示了使用 新功能self 類型。

4. 使用Exception Group處理多個異常

Python 3.11 將包含一個新的內見異常類型,稱為 ExceptionGroup。這種異常類型可以同時引發多個不同的異常或錯誤。ExceptionGroup 接受兩個參數,一個字串,然後是我們想要引發和處理的一系列錯誤。請看下面的程式碼:

一但程式出現我們自定義的錯誤類型,可以使用except*進行個別的處理喔!

5. TypeDict-必要和非必要的key

Python 3.8 引入 TypedDict 並將其添加到class中。TypedDict 類型使得創建具有特定鍵和值的字典(Dict)。但是,如果我們希望class中的某些變數是可選的,那麼使用 TypedDict 實現起來並不容易。讓我們用一個例子來證明這一點。我們將創建一個包含3個鍵的字典 — — 姓名、年齡和汽車。

上面的class將需要姓名、年齡和駕駛的汽車。但是,我們想讓car汽車這個變數是選填的,因為不是每個人都有汽車。要在 Python 3.10 或更早版本中實現它,必須創建另一個將實現可選填的class(子類):

Python 3.11 引入了RequiredNotRequired類型來解決這類問題。使用這些類型(RequiredNotRequired),我們不必創建子類來實現可選鍵,所以我們只需將可選鍵註釋為NotRequired 即可

以上是 Python 3.11新增的5個新功能。Python3.11 最終版本預計於 2022 年 10 月發布。

如果本篇文章有幫助到你,請分享文章,關注我與訂閱我,發布文章時獲得通知 :PP

--

--