新聞中心
本篇內(nèi)容主要講解“Python 3.9新特性有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python 3.9新特性有哪些”吧!
成都創(chuàng)新互聯(lián)公司憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗,為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個人等客戶提供了網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計服務(wù),以良好的商業(yè)信譽,完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。
字典合并
一個非常優(yōu)雅的特性,當我們想將兩個字典進行合并時,只需要使用操作符“|”:
a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
c = a | b
print(c)
輸出結(jié)果:
[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)
輸出結(jié)果:
[Out]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
這里需要注意的是,如果兩個字典都包含相同的Key,運算結(jié)果將直接采用第二個字典的鍵值對:
a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'}
b = {4: 'd', 5: 'e', 6: 'but different'}
print(a | b)
輸出結(jié)果:
[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)
輸出結(jié)果:
[Out]: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}
這里需要注意的是,如果你使用標準的合并操作符“|”來取代上面的“|=”操作服,這會直接導致TypeError。
TypeError:unsupported opprand type(s) for |:'dict' and 'generator'
類型提示
Python作為動態(tài)類型的編程語言,這意味著在使用中我們并不需要給變量指定數(shù)據(jù)類型。然而雖然可以這樣做,但是這讓我們在維護代碼時常常感到困惑,并且靈活性也成了缺點。
在3.5版本后,雖然我們可以指定數(shù)據(jù)類型了,但是使用起來仍然非常麻煩。這次新版本就對此進行了更新:沒有類型提示vs有類型提示
上圖中我們想通過add_int函數(shù)將兩個相同的數(shù)字想加到一起,然而編譯器并沒有很好的理解我們的意圖,由于兩個字符串也可以使用+進行連接,所以這里并沒有給出警告。
現(xiàn)在當我們可以指定函數(shù)的參數(shù)類型時,在參數(shù)類型為int時,編譯器就能夠立即識別上述的問題。
新增字符串函數(shù)
雖然字符串函數(shù)沒有其他新特性那么強大,但字符串作為開發(fā)中使用最頻繁的數(shù)據(jù)類型,這里也需要提一下他的改變。新版本中添加了移除前綴和后綴的兩個字符串函數(shù):
"Hello world".removeprefix("He")
Hello world".removesuffix("ld")
輸出結(jié)果:
[Out]: "llo world"
[Out]: "Hello wor"
新的解析器
作為一個普通的開發(fā)者,語法解析器的變化可能不易被察覺,但它的變化有可能成為Python演變中的一個重要轉(zhuǎn)折點。
我們所知,目前Python主要是用的是一種基于LL(1)的語法,這種語法可以通過LL(1)解析器進行解析,該解析器從上到下、從左到右地解析代碼,只需要從詞法分析器中取出一個 token 就可以正確地解析下去。
然而LL(1) 存在的一些問題:
Python 中包含非 LL(1) 語法,正因如此,當前語法采用了一些曲線救國的辦法,帶來了很多不必要的復雜性。
LL(1) 給 Python 語法造成了很多限制。某個相關(guān)話題提到了下面代碼無法用當前的解析器進行解析(會造成 SyntaxError)。
with (open("a_really_long_foo") as foo,
open("a_really_long_bar") as bar):
到此,相信大家對“Python 3.9新特性有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
網(wǎng)頁名稱:Python3.9新特性有哪些
文章分享:http://m.biofuelwatch.net/article/jshpss.html