丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

Python 3.9有什么新功能?

本文作者: AI研習(xí)社-譯站 2020-10-15 10:50
導(dǎo)語:讓我們先來看看這些新特性以及如何使用它們。

Python 3.9有什么新功能?

字幕組雙語原文:Python 3.9有什么新功能?

英語原文:What Are The New Features in Python 3.9?

翻譯:雷鋒字幕組Suen


Python的新版本即將面世?,F(xiàn)在是beta版(3.9.0b3),我們很快就會看到python3.9的完整版本。

一些最新的特性令人興奮,在發(fā)布后使用它們將是令人震驚的。我們將討論以下內(nèi)容: 

  • 字典聯(lián)合運算符 

  • 類型提示 

  • 兩種新的字符串方法 

  • 新的Python解析器 

這挺酷的,讓我們先來看看這些新特性以及如何使用它們。 

字典聯(lián)合 

我最喜歡的一個新功能,語法流暢。如果我們有兩個字典a和b需要合并,我們現(xiàn)在使用union運算符。 

我們有合并運算符 |:

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

輸出:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

更新運算法 |=,更新原始字典:

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

輸出: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

如果字典共享一個公鑰,將使用第二個字典的鍵值對:

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

輸出:{1: 'a', 2: 'b', 3: 'c', 6: 'but different', 4: 'd', 5: 'e'}

使用Iterables更新字典

|=運算符的另一個很酷的行為是使用iterable對象(如列表或生成器)用新的鍵值對更新字典:

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

輸出: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}

如果我們用標(biāo)準(zhǔn)的union運算符|嘗試同樣的操作,將輸出TypeError,因為它只允許dict類型之間的聯(lián)合。

類型提示

Python是動態(tài)語言,這意味著我們不需要在代碼中指定數(shù)據(jù)類型。 

這是可以的,但有時會令人困惑,而且Python的靈活性突然變得比其他任何東西都麻煩。 

從3.5開始,我們可以指定類型,但這相當(dāng)麻煩。這次更新確實改變了這一點,讓我們舉個例子:

Python 3.9有什么新功能?

無類型提示(左) V 有類型提示(右)


在add_int函數(shù)中,我們想給它添加相同的數(shù)字(出于某種神秘的未定義的原因)。但是我們的編輯器不知道,使用+將兩個字符串添加在一起是完全可以的,因此不會提示警告。 

我們現(xiàn)在可以做的是將預(yù)期的輸入類型指定為int。 之后編輯器會立刻報出問題。

我們也可以對包含的類型進(jìn)行詳細(xì)說明,例如:

Python 3.9有什么新功能?

類型提示用于各處-感謝新語法,看起來更加簡潔:

Python 3.9有什么新功能?

我們將sum_dict的參數(shù)指定為dict,將返回值指定為int。在測試定義期間,我們還確定了它的類型。

字符串方法

雖然沒有其他新功能那么吸引人,但仍然值得一提,因為它特別有用。添加了兩種用于刪除前綴和后綴的新字符串方法:

"Hello world".removeprefix("He")

輸出:“l(fā)lo world”

Hello world".removesuffix("ld"

輸出:“Hello wor” 

新解析器

這是一個看不見的變化,但有可能成為Python未來發(fā)展最重要的變化之一。 

Python當(dāng)前使用的主要是基于LL(1)的語法,而該語法又可以由LL(1)解析器進(jìn)行解析,該解析器從上到下,從左至右解析代碼,提前一個標(biāo)記。

我?guī)缀醪恢肋@是如何工作的—但是我可以給您介紹一些由于使用這種方法而導(dǎo)致的Python當(dāng)前的一些問題:

Python包含非LL(1)語法;因此,當(dāng)前語法的某些部分使用了變通方法,造成了不必要的情況復(fù)雜性 。LL(1) 在Python語法中創(chuàng)建限制(沒有可能的解決方法)。此問題強調(diào)以下代碼無法使用當(dāng)前解析器實現(xiàn)(引發(fā)語法錯誤):

with (open("a_really_long_foo") as foo,
      open("a_really_long_bar") as bar):    pass

LL(1)在解析器中用左遞歸中斷。這意味著特定的遞歸語法會導(dǎo)致解析樹中出現(xiàn)無限循環(huán)。Python的創(chuàng)建者Guido van Rossum解釋道 

所有這些因素(還有更多我根本無法理解的因素)對Python有一個主要的影響;它們限制了語言的發(fā)展。

新的基于PEG的解析器將使Python開發(fā)人員具有更大的靈活性,這一點我們將從Python 3.10 onwards  開始注意到。

這就是我們在即將到來的Python3.9中所能期待的一切。如果您真的等不及了,最新的beta版本3.9.0b3 — is available here


雷鋒字幕組是一個由AI愛好者組成的翻譯團隊,匯聚五五多位志愿者的力量,分享最新的海外AI資訊,交流關(guān)于人工智能技術(shù)領(lǐng)域的行業(yè)轉(zhuǎn)變與技術(shù)創(chuàng)新的見解。

團隊成員有大數(shù)據(jù)專家,算法工程師,圖像處理工程師,產(chǎn)品經(jīng)理,產(chǎn)品運營,IT咨詢?nèi)?,在校師生;志愿者們來自IBM,AVL,Adobe,阿里,百度等知名企業(yè),北大,清華,港大,中科院,南卡羅萊納大學(xué),早稻田大學(xué)等海內(nèi)外高校研究所。

如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學(xué)習(xí)新知,分享成長。

Python 3.9有什么新功能?

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

Python 3.9有什么新功能?

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說