站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Python 3.11中的最佳新功能和功能修復(fù)

        本篇文章給大家?guī)砹岁P(guān)于python的相關(guān)知識(shí),其中主要介紹了關(guān)于3.11版本中的最佳新功能和功能修復(fù),下面是Python 3.11中最重要的新特性的概述,以及它們對(duì)Python開發(fā)人員的意義,下面一起來看一下,希望對(duì)大家有幫助。

        Python 3.11中的最佳新功能和功能修復(fù)

        推薦學(xué)習(xí):python視頻教程

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

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

        速度提升:

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

        在Python 3.11中,Python函數(shù)調(diào)用也需要較少的開銷。函數(shù)調(diào)用的堆棧幀現(xiàn)在使用的內(nèi)存更少,設(shè)計(jì)效率更高。此外,雖然遞歸調(diào)用沒有進(jìn)行尾部?jī)?yōu)化(無論如何,這在Python中可能是不可能的),但它們比以前的版本更高效。Python解釋器本身的啟動(dòng)速度也更快,Python運(yùn)行時(shí)所需的核心模塊的存儲(chǔ)和加載效率也更高。

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

        增強(qiáng)的錯(cuò)誤信息提示:

        3.11中另一個(gè)非常有用的特性是更詳細(xì)的錯(cuò)誤消息。由于解釋器中使用了新的解析器,Python 3.10已經(jīng)有了更好的錯(cuò)誤報(bào)告。現(xiàn)在,Python 3.11對(duì)此進(jìn)行了擴(kuò)展,提供了關(guān)于給定表達(dá)式的哪個(gè)特定部分導(dǎo)致錯(cuò)誤的詳細(xì)反饋。

        思考以下引發(fā)錯(cuò)誤的代碼:

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

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

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

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

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

        現(xiàn)在,問題的出處就十分明確了。

        異常改進(jìn):

        Python的錯(cuò)誤處理機(jī)制在Python 3.11中獲得了許多新特性:

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

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

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

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

        類型提升:

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

        自身類型:

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

        任意字符串文字類型:

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

        數(shù)據(jù)類轉(zhuǎn)換:

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

        可變泛型:

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

        stdlib中支持TOML只讀:

        Python使用TOML或Tom顯式的簡(jiǎn)約語言作為配置格式(如pyproject.TOML),但沒有將讀取TOML格式文件的能力公開為標(biāo)準(zhǔn)庫模塊。Python 3.11添加了tomllib來解決這個(gè)問題。注意,tomllib不創(chuàng)建或?qū)懭隩OML文件;為此,您需要像Tomli-W或TOML Kit這樣的第三方模塊。

        正則表達(dá)式的原子分組和加速:

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

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

        從標(biāo)準(zhǔn)庫中刪除“壞死的電池”:

        PEP 594啟動(dòng)了一項(xiàng)從Python標(biāo)準(zhǔn)庫中移除許多所謂的壞死的電池或過時(shí)或未維護(hù)的模塊的工作。從Python 3.11開始,這些庫被標(biāo)記為已棄用,但尚未刪除;它們將在Python 3.13中完全刪除。

        Python 3.11其它新增功能、修復(fù)和更改:

        Python 3.11中還有許多更小的改進(jìn):

        1、Python對(duì)象需要更少的內(nèi)存,因?yàn)樗鼈兊拿Q空間現(xiàn)在是延遲創(chuàng)建的,它們的名稱空間字典現(xiàn)在盡可能共享鍵。

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

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

        推薦學(xué)習(xí):python視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国内精品久久久久久不卡影院 | 正在播放国产精品每日更新 | 最新国产乱人伦偷精品免费网站| 久夜色精品国产一区二区三区| 国产精品亚洲高清一区二区| 国产精品久久国产精品99盘 | 国产精品免费久久久久久久久| 国产成人无码久久久精品一| 中文字幕一精品亚洲无线一区| 精品国产热久久久福利| 精品乱人伦一区二区三区| 精品国产乱码久久久久久1区2区| 亚洲国产精品尤物YW在线观看| 国产精品日韩欧美久久综合| 久久免费精品视频| 国产91久久精品一区二区| 久久国产精品无码HDAV| 亚洲中文字幕无码久久精品1| 久久久久国产日韩精品网站| 国产精品永久免费| 国产精品第六页| 国产高清一级毛片精品| 91精品久久久久久无码| 欧美日韩精品一区二区在线播放 | 欧美精品免费线视频观看视频| 国产精品电影在线观看| www.亚洲精品| 国产精品福利网站导航| 国产精品爽爽va在线观看网站| 91精品国产综合久久精品| 国产国产精品人在线观看| 97精品伊人久久大香线蕉app| 国产人妖乱国产精品人妖| 国产精品视频第一区二区三区| 国产午夜精品一区二区三区漫画 | 无码精品国产VA在线观看| 亚洲七七久久精品中文国产| 在线精品国产一区二区三区| 亚洲国产精品乱码一区二区| 亚洲精品国产精品乱码视色| 亚洲精品乱码久久久久久按摩|