Python3.9有哪些新特性

這篇文章主要介紹“Python3.9有哪些新特性”,在日常操作中,相信很多人在Python3.9有哪些新特性問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Python3.9有哪些新特性”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為右江企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì),右江網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

Python 發(fā)布了版本號(hào)為 3.9.0b3 的 beta 版,后續(xù)即將發(fā)布 Python 3.9 的正式版。該版本包含了一些令人興奮的新特性,預(yù)計(jì)正式版發(fā)布以后這些特性能夠被大家廣泛使用。

本文主要介紹以下幾個(gè)方面:

  • 新增字典合并運(yùn)算
  • 類型提示
  • 字符串新增的兩個(gè)方法
  • 新的 Python 解析器 —— 大贊!

接下來(lái)帶著大家了解一下這些特性以及它們的用法。

 

1.字典合并

這是我最喜歡的新特性,該特性的用法非常優(yōu)雅。如果你想對(duì)兩個(gè)字典 a 和 b 進(jìn)行合并,我們就可以使用合并操作,合并的操作符為 | 。

a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
c = a | b
print(c)
 

結(jié)果如下:

Python3.9有哪些新特性  

還可以使用合并更新操作 |= ,該操作符可以更新原始字典的數(shù)據(jù)。

a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
a |= b
print(a)
 

結(jié)果如下:

Python3.9有哪些新特性  

在執(zhí)行合并運(yùn)算時(shí),如果字典包含相同的 key, 運(yùn)算結(jié)果將采用第二個(gè)字典的鍵值對(duì)。

a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'}
b = {4: 'd', 5: 'e', 6: 'but different'}
print(a | b)
 

結(jié)果如下:

Python3.9有哪些新特性  
 

2.可迭代對(duì)象的字典更新

|= 操作符另外一個(gè)非常棒的功能是使用一個(gè)可迭代對(duì)象(如列表或者生成器)的鍵值對(duì)更新字典。

a = {'a': 'one', 'b': 'two'}
b = ((i, i**2) for i in range(3))
a |= b
print(a)
 

結(jié)果如下:

Python3.9有哪些新特性  

如果你用標(biāo)準(zhǔn)的合并操作符 | 替換上面的 |=操作符,由于 | 操作符只允許字典類型進(jìn)行合并,所以將導(dǎo)致 TypeError。

Python3.9有哪些新特性  
 

3.類型提示

Python 是動(dòng)態(tài)類型的編程語(yǔ)言,這就意味著我們不需要在代碼中指定數(shù)據(jù)類型。

雖然可以這么做,但是這么做有時(shí)候容易讓人困惑,此時(shí)靈活性就成為了缺點(diǎn)。

從 3.5 版本開(kāi)始,我們可以指定類型,但是仍然非常麻煩。這次對(duì)此進(jìn)行了改進(jìn),大家看下面的這個(gè)例子。

Python3.9有哪些新特性  

由于某個(gè)神秘的原因,我們想通過(guò)上圖所示的 add_int 函數(shù),將相同的數(shù)字相加到一起。但是編輯器并不能很好地領(lǐng)會(huì)我們的意圖,由于兩個(gè)字符串也可以使用 + 進(jìn)行連接所以并沒(méi)有給出警告。

現(xiàn)在我們可以指定函數(shù)的參數(shù)類型為 int,編輯器就能夠立即識(shí)別出上述問(wèn)題。

通過(guò)類型提示,我們還能看到非常具體的類型。

Python3.9有哪些新特性  

任何地方都可以使用類型提示,由于有了新的語(yǔ)法支持,看起來(lái)清爽多了。

Python3.9有哪些新特性  
 

4.新增字符串函數(shù)

雖然字符串函數(shù)并沒(méi)有其他特性那么“偉大”,由于非常實(shí)用,也值得在這里一提。新版本中添加了移除前綴和后綴的兩個(gè)字符串函數(shù)。

"Hello world".removeprefix("He")
 

結(jié)果如下:

Python3.9有哪些新特性??

Hello world".removesuffix("ld")
 

結(jié)果如下:

Python3.9有哪些新特性  
 

5.新的解析器

開(kāi)發(fā)者不容易察覺(jué)到新的語(yǔ)法解析器帶來(lái)的變化,但是它有可能成為 Python 演變中的一個(gè)重要轉(zhuǎn)變。

Python 目前主要使用一種基于 LL (1)的語(yǔ)法,而這種語(yǔ)法可以通過(guò) LL (1)解析器進(jìn)行解析——該解析器從上到下、從左到右地解析代碼,只需要從詞法分析器中取出一個(gè) token 就可以正確地解析下去。

我并不是非常清楚它的工作原理,但是我可以給出LL(1) 存在的一些問(wèn)題:

  • Python 中包含非 LL(1) 語(yǔ)法,正因如此,當(dāng)前語(yǔ)法采用了一些曲線救國(guó)的辦法,帶來(lái)了很多不必要的復(fù)雜性。
  • LL(1) 給 Python 語(yǔ)法造成了很多限制。某個(gè)相關(guān)話題 提到了下面代碼無(wú)法用當(dāng)前的解析器進(jìn)行解析(會(huì)造成SyntaxError)。
with (open("a_really_long_foo") as foo,
      open("a_really_long_bar") as bar):
    pass
 

LL(1) 不能處理左遞歸。特定的遞歸語(yǔ)法意味著解析樹(shù)時(shí)可能出現(xiàn)無(wú)限循環(huán)。Python 的締造者 Guido van Rossum 在這篇文章[1]中給出了解釋。

這些因素以及更多我無(wú)法理解的其他因素影響著 Python 的發(fā)展,它們限制了語(yǔ)言的演進(jìn)。

新的解析器基于 PEG, 它將給 Python 開(kāi)發(fā)者提供更大的靈活性,從 Python 3.10 開(kāi)始[2]我們將能夠感受到這一點(diǎn)。

到此,關(guān)于“Python3.9有哪些新特性”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

當(dāng)前名稱:Python3.9有哪些新特性
分享URL:http://bm7419.com/article4/jjiooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、商城網(wǎng)站、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司