站長資訊網
        最全最豐富的資訊網站

        Python 3.11中的最佳新功能和功能修復

        本篇文章給大家帶來了關于python的相關知識,其中主要介紹了關于3.11版本中的最佳新功能和功能修復,下面是Python 3.11中最重要的新特性的概述,以及它們對Python開發人員的意義,下面一起來看一下,希望對大家有幫助。

        Python 3.11中的最佳新功能和功能修復

        推薦學習:python視頻教程

        Python編程語言每年都會發布新版本,上半年發布了一個功能鎖定的beta版本,年底將發布最終版本。Python 3.11的功能集剛剛定稿,有一個測試版可供測試。開發人員被鼓勵在非生產代碼上試用此最新版本,以驗證它是否與您的程序不相沖突,并了解您的代碼是否會從其性能增強中受益。

        下面是Python 3.11中最重要的新特性的概述,以及它們對Python開發人員的意義。

        速度提升:

        Python 3.11中有許多單獨的性能改進,但最大的一個增加是專門的自適應解釋器。由于對象的類型很少更改,解釋器現在嘗試分析運行的代碼,并用特定類型的字節碼替換常規字節碼。例如,二進制操作(加法、減法等)可以替換為整數、浮點和字符串的專用版本。

        在Python 3.11中,Python函數調用也需要較少的開銷。函數調用的堆棧幀現在使用的內存更少,設計效率更高。此外,雖然遞歸調用沒有進行尾部優化(無論如何,這在Python中可能是不可能的),但它們比以前的版本更高效。Python解釋器本身的啟動速度也更快,Python運行時所需的核心模塊的存儲和加載效率也更高。

        根據官方的Python基準測試套件,Python 3.11的運行速度大約是3.10版的1.25倍。請注意,這個加速是一個總體衡量標準:有些東西要快得多,但其他許多東西只是略快或大致相同。盡管如此,這些改進最好的部分是免費的。您無需對Python程序進行任何代碼更改即可利用3.11的加速。

        增強的錯誤信息提示:

        3.11中另一個非常有用的特性是更詳細的錯誤消息。由于解釋器中使用了新的解析器,Python 3.10已經有了更好的錯誤報告。現在,Python 3.11對此進行了擴展,提供了關于給定表達式的哪個特定部分導致錯誤的詳細反饋。

        思考以下引發錯誤的代碼:

        x = [1,2,3] z = x[1][0]

        在Python 3.10中,我們會收到以下錯誤消息,這不是很有幫助:

          File "C:Python311code.py", line 2, in <module>     z = x[1][0] TypeError: 'int' object is not subscriptable

        與其讓我們弄清楚哪個int是不可編譯的代碼,Python 3.11中的錯誤跟蹤指向生成錯誤的行的確切部分:

          File "C:Python311code.py", line 2, in <module>     z = x[1][0]         ~~~~^^^ TypeError: 'int' object is not subscriptable

        現在,問題的出處就十分明確了。

        異常改進:

        Python的錯誤處理機制在Python 3.11中獲得了許多新特性:

        1、使用新的except*語法和新的ExceptionGroup異常類型可以處理多異常問題。這允許優雅地處理可能同時引發多個錯誤的問題,例如在處理異步或并發方法時,或者在重試操作時處理多個故障時。

        2、“零成本”異常:除非實際拋出異常,否則現在對程序沒有內存消耗。這意味著try/except塊的默認路徑更快,并且使用更少的內存。

        3、捕獲異常所需的時間減少了約10%。

        4、異常可以通過上下文注釋來完善,使得異常與代碼塊分離。

        類型提升:

        Python的類型提示特性使更大的代碼庫更易于管理和分析,并且自Python 3.5以來,隨著每次修訂類型提示的性能都有顯著增加。Python 3.11引入了幾個新的類型提示。

        自身類型:

        類方法返回自身類型之前需要遲鈍且詳細的聲明才會生效。類型.Self的模式讓你聲明類方法的返回值更為簡便。您可以從這些方法的分析工具中獲得有用且可預測的結果。

        任意字符串文字類型:

        以前,類型注釋無法定義給定變量必須是字符串文字,即源代碼中定義的字符串。新類型。LiteralString注釋修復了這一問題。使用新注釋,linters可以測試變量是源中定義的字符串還是僅由源定義的字符串組成的新字符串。

        數據類轉換:

        自Python 3.7以來,數據類使得定義類變得更加容易,這些類遵循基于初始化參數創建屬性的常見模式。但沒有標準機制允許行為類似于數據類(但不是數據類本身)的東西使用類型注釋來聲明其行為。數據類轉換添加了 類型.dataclass_transform修飾符去提示編譯器一個給定的函數、類或元類的行為像一個數據類。

        可變泛型:

        最初的泛型建議包括TypeVar,這是一種使用單個參數化類型指定泛型函數的方法,例如,類型T可以是int或float。Python 3.11添加了TypeVarTuple,或“可變泛型”,您可以使用它來指定占位符,不僅僅是一種類型,而是一系列類型,表示為元組。這在像NumPy這樣的庫中尤其有用,在這些庫中,您可以提前檢查錯誤,例如提供的數組的形狀是否正確。

        stdlib中支持TOML只讀:

        Python使用TOML或Tom顯式的簡約語言作為配置格式(如pyproject.TOML),但沒有將讀取TOML格式文件的能力公開為標準庫模塊。Python 3.11添加了tomllib來解決這個問題。注意,tomllib不創建或寫入TOML文件;為此,您需要像Tomli-W或TOML Kit這樣的第三方模塊。

        正則表達式的原子分組和加速:

        Python的re模塊用于處理正則表達式,它缺少正則表達式的其他實現中的一些特性。一種是原子分組,在其他語言中得到廣泛支持。Python 3.11現在使用原子分組的通用語法支持此模式(例如,(?>…)。

        re模塊的模式匹配引擎也被重寫了一些,運行速度快了大約10%。

        從標準庫中刪除“壞死的電池”:

        PEP 594啟動了一項從Python標準庫中移除許多所謂的壞死的電池或過時或未維護的模塊的工作。從Python 3.11開始,這些庫被標記為已棄用,但尚未刪除;它們將在Python 3.13中完全刪除。

        Python 3.11其它新增功能、修復和更改:

        Python 3.11中還有許多更小的改進:

        1、Python對象需要更少的內存,因為它們的名稱空間現在是延遲創建的,它們的名稱空間字典現在盡可能共享鍵。

        2、所有鍵都是Unicode的字典不再需要存儲哈希,因此減少了字典的大小并允許更高的緩存效率。

        3、Python運行時使用的是Python的解釋器,現在可以實驗性地支持編譯到WebAssembly。這可能有助于PyScript等項目的未來開發,PyScript允許WASM編譯的Python運行時在瀏覽器中運行。

        推薦學習:python視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 欧美国产亚洲精品高清不卡| 午夜不卡久久精品无码免费| 国产精品天干天干在线综合| 国产观看精品一区二区三区| 久久精品国产亚洲av高清漫画 | 亚洲av无码成人精品国产| 2020国产精品永久在线| 亚洲日韩中文在线精品第一| 国产成人精品一区二三区在线观看| 久久精品无码专区免费东京热| 精品无码三级在线观看视频 | 韩国三级中文字幕hd久久精品| 91精品国产综合久久精品| 亚洲国产精品一区二区成人片国内 | 成人精品视频一区二区三区| 久久亚洲中文字幕精品一区四| 久久这里只有精品首页| 国产亚洲精品资源在线26u| 亚洲国产精品专区在线观看| 国产亚洲精品高清在线| 99精品欧美一区二区三区| 91精品国产91久久综合| 久久精品中文无码资源站| 亚洲精品国精品久久99热| 精品少妇一区二区三区在线| 99久re热视频这里只有精品6| 精品亚洲综合久久中文字幕| 精品久久久久久无码专区不卡| 热综合一本伊人久久精品| 国语自产精品视频在线观看| 国产精品免费一区二区三区| 91精品国产综合久久四虎久久无码一级 | 国精品无码一区二区三区在线 | 亚洲国产精品无码久久久不卡 | 成人午夜精品久久久久久久小说| 精品乱人伦一区二区三区| 99精品在线播放| 久久se精品一区二区| 亚洲国语精品自产拍在线观看| 四虎成人欧美精品在永久在线| 色偷偷888欧美精品久久久|