您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python3.9的新功能有哪些”,在日常操作中,相信很多人在Python3.9的新功能有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python3.9的新功能有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Python 的新方向
此次更新有兩個重大變化,雖然直觀上不受影響,但要開始注意了:作為一種語言,Python的發展將略有不同。簡而言之,可總結為:
Python對解析器的限制
版本更小,迭代更頻繁
1. LL(1) 和 PEG
大約30年前,吉多·范·羅森寫了pgen,這是為 Python 編寫的第一批代碼之一,至今仍被用作Python的解析器。Pgen的編寫基于LL(1)的語法變體,這標志著解析器若要全方位讀取代碼,只需先行令牌。這也基本上說明Python的開發是有限的,因為:
先行令牌限制了語法規則的表現力。
由于當前Python已包含非LL(1)語法,解析器迂回方案繁雜,使過程復雜化。
即使有這些解決方案,情況也很受限。規則可以改變但不能違反。
使用LL(1)特定的左遞歸語法可能會使解析樹分析無限循環,從而導致棧溢出。
基于LL(1)的解析器的這些屬性限制了Python可能實現的價值,而Python 3.9打破了這些限制,這要歸功于閃亮新星PEG解析器,PEP617有所概述。我們不會很快感受到這一點。在Python 3.10出來之前,新解析器不會更改;但之后,Python將會沖破LL(1)的限制,大顯身手。
2. 開發周期
Python的發布計劃將從18 個月縮減到 12 個月。
在 3.9 版本發布之前,Python原本的發布計劃是間隔18個月一版的,而現在,它進入了為期12個月的發布時間表[PEP 602]。從前新版本每18個月才亮相一次,現在一年一換。這也意味著Python:
不再一次性上線大量新功能。
變化更循序漸進,但由于新功能的發布,修復將會更快完成。
發布日期更規律,新Python將在每年10月面世。
所以從本質上講,本文主要關注12個月周期內較小的增量變化,而不是每18個月發生的較大變化。與此同時,預計開發速度將保持不變。
二、新功能
1. 類型提示
早在2008年,Python 3就引入了函數注釋——類型提示的前身。它雖然不是特別強大,但是一個重要開端。
Python類型提示的實時狀態是多次添加和修改注釋和鍵入的變化累積。
此后又增加了其他功能。如今,3.9版本將各功能與整潔的新語法結合起來,以取得Python類型提示的最新發展。
現在,我們可以輕松地指定變量的預期數據類型。如果寫了一些沒有意義的東西(比如把字符串傳遞給整數),編輯器就會提醒有錯誤產生。雖然不會指出錯誤,但在使用復雜代碼庫時,它可幫了大忙。
在Python中,用“+”連接兩個字符串是絕對有效的。因此,“add_int”函數接收兩個字符串不會引發任何錯誤。
無類型提示(左);Python3.9帶類型提示(右)。
有了新的類型提示功能,只需在函數定義的參數中添加 :int,編輯器就會立即識別錯誤。
指定預期的輸入和輸出數據類型。
也可以使用->type 語法來確定函數的值輸出類型。
可將不同類型結合在一起來創建更復雜的注釋。
不要局限于簡單的預定義類型!
2. 字符串方法
雖然不像其他變化那樣酷,但此方法被使用頻率極高。有兩種用于刪除字符串前綴和后綴的新方法:
"foo bar".removeprefix("fo") [Out]: 'o bar'
"foo bar".removesuffix("ar") [Out]: 'foo b'
3. 合并字典
有兩個新運算符來合并字典。首先是合并運算符 |:
a = {1: 'a', 2: 'b', 3: 'c'} b = {4: 'd', 5: 'e'}c = a | b print(c)[Out]: {1: 'a', 2: 'b', 3: 'c', 4:'d', 5: 'e'}
然后更新運算符就地合并:
a = {1: 'a', 2: 'b', 3: 'c'} b = {4: 'd', 5: 'e'}a |= b print(a)[Out]: {1: 'a', 2: 'b', 3: 'c', 4:'d', 5: 'e'}
到此,關于“Python3.9的新功能有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。