您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python 3.9版本有哪些新功能”,在日常操作中,相信很多人在Python 3.9版本有哪些新功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python 3.9版本有哪些新功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1. 字典合并
這是筆者最喜歡的新功能之一,它擁有優美的語法。如果有兩個字典a和b需要合并,可以使用合并運算符:
合并(merge)操作符|:
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'}
如果字典共享一個公共鍵(common key),則使用第二個字典中的鍵值對:
a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'} b = {4: 'd', 5: 'e', 6: 'but different'}print(a | b)[Out]: {1: 'a', 2: 'b', 3: 'c', 6: 'but different',4: 'd', 5: 'e'}
使用迭代更新字典:|=運算符還有一個不錯的地方,即能夠通過可迭代對象(例如列表或生成器)使用新的鍵值對更新字典。
a = {'a': 'one', 'b': 'two'} b = ((i, i**2) for i in range(3))a |= b print(a)[Out]: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}
如果嘗試使用標準合并運算符|進行相同的操作,將產生一個類型錯誤(TypeError),因為它僅允許字典(dict)類型之間的合并操作。
2. 字符串方法
這個功能看起來“其貌不揚”,但實則非常實用。新版本添加了兩個用于刪除前綴和后綴的新字符串方法:
“ Hello world” .removeprefix(“ He”) [Out]:“ llo world” Hello world” .removesuffix(“ ld”) [Out]:“ Hello wor”
3. 新分析器
這是一個不可見的更改,但有可能成為Python未來發展中最重要的更改之一。
Python當前使用的主要是基于LL(1)的語法,而該語法又可以由LL(1)分析器進行解析,該分析器使用單一的前向標記符從上到下,從左到右地解析代碼。
筆者幾乎不知道它是如何工作的,但是可以指出一些由于Python使用這種方法導致的問題:
Python包含非LL(1)語法;當前語法的某些部分使用了工作區,從而造成不必要的復雜性。
LL(1)在Python語法中造成限制(沒有可用的工作區)。此問題突出說明了以下代碼根本無法使用當前分析器實現(引發語法錯誤):
with (open("a_really_long_foo") as foo, open("a_really_long_bar")as bar): pass
LL(1)在分析器中以左遞歸中斷。意味著含義特定的遞歸語法可能導致解析樹中的無限循環。
所有這些因素(還有很多根本無法理解的因素)嚴重限制了Python語言的發展。而基于PEG的新分析器將為Python開發人員提供更大的靈活性,人們會從Python 3.10開始注意到這一點。
4. 類型提示
Python是動態類型的,這意味著無需在代碼中指定數據類型。這一特性本身沒有問題,但有時可能會造成混淆。
從Python 3.5開始,用戶可以指定類型,但是操作起來非常麻煩。此次更新改變了這一點,舉個例子:
無類型提示(左)vs3.9中帶類型提示(右)
add_int函數的目的是為數值自身添加相同的數值。但是編輯器并不知道這一點,因此完全可以使用+將兩個字符串加在一起,不會發出警告。現在可以將期望的輸入類型指定為int。使用此功能,編輯器可以立即了解問題。
用戶還可以非常詳細地了解所包含的類型,例如:
類型提示可以在任何地方使用,新語法讓代碼看起來更加整潔:
將sum_dict的參數指定為dict,將返回值指定為整數型。在定義test時,也要確定其類型。
這些新功能確實讓人迫不及待,等不及的同學可以先去試試最新的Beta版本-3.9.0b3。
到此,關于“Python 3.9版本有哪些新功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。