16歲高中生整理,一張圖展示Python 3.9八大新特性
金磊 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
大家好,歡迎來(lái)到 Crossin的編程教室 !
Python 發(fā)展至今,已經(jīng)來(lái)到了 Python3.9 版本。雖然從入門學(xué)習(xí)角度來(lái)說(shuō),只要是 Python3,基礎(chǔ)語(yǔ)法都是相同,但每個(gè)版本更新還是會(huì)帶來(lái)一些新的功能。
今天這篇文章就給大家聊一聊關(guān)于 Python 3.9 的新特性。
先來(lái)速看下此次發(fā)布版本的重點(diǎn)。
新語(yǔ)法特性:
PEP 584,為 dict 增加合并運(yùn)算符。
PEP 585,標(biāo)準(zhǔn)多項(xiàng)集中的類型標(biāo)注泛型。
PEP 614,放寬對(duì)裝飾器的語(yǔ)法限制。
新內(nèi)置特性:
PEP 616,移除前綴和后綴的字符串方法。
新標(biāo)準(zhǔn)庫(kù)中的特性:
PEP 593,靈活的函數(shù)和變量標(biāo)注。
添加了 os.pidfd_open() ,允許不帶競(jìng)爭(zhēng)和信號(hào)的進(jìn)程管理。
解釋器方面的改進(jìn):
PEP 573,從 C 擴(kuò)展類型的方法快速訪問(wèn)模塊狀態(tài)。
PEP 617,CPython 現(xiàn)在使用基于 PEG 的新解析器。
……
新庫(kù)模塊:
PEP 615,IANA 時(shí)區(qū)數(shù)據(jù)庫(kù)現(xiàn)在已包含于標(biāo)準(zhǔn)庫(kù)的 zoneinfo 模塊。
圖的拓?fù)渑判驅(qū)崿F(xiàn)現(xiàn)在已由新的 graphlib 模塊提供。
為了更好地理解此次更新,Twitter上一位16歲少年Pratham Prasoon,還自制了一張「Python 3.9 新特性必知圖」。
列出了他認(rèn)為比較重要的八大新特性,廣受網(wǎng)友好評(píng)。

1、字典合并與更新運(yùn)算符
此次「字典的合并與更新運(yùn)算符」的新特性,是Python3.9的一大亮點(diǎn)。
合并 (|) 與更新 (|=) 運(yùn)算符已被加入內(nèi)置的 dict 類,擴(kuò)充了現(xiàn)有的 dict.update 和 {**d1, **d2} 字典合并方法。
在Prasoon提供的圖中也展示了對(duì)應(yīng)的示例,如下圖所示:

2、新增用于移除前綴和后綴的字符串方法
在Python的官方文檔,以及Prasoon的圖表中,也著重展示了新的用于「移除前綴和后綴的字符串」方法。
str.removeprefix(prefix)和str.removesuffix(suffix)可以方便地從字符串中,移除不需要的前綴或后綴:

3、標(biāo)準(zhǔn)多項(xiàng)集中的類型標(biāo)注泛型
在類型標(biāo)注方面,現(xiàn)在可以使用內(nèi)置的多項(xiàng)集類型(例如 list 和 dict)作為通用類型,而不必再?gòu)?typing 導(dǎo)入對(duì)應(yīng)的大寫形式類型名。

4、__import__()特性修改
__import__() 現(xiàn)在會(huì)引發(fā) ImportError 而不是 ValueError。
至于原因,在Python的官方文檔中有相應(yīng)的解釋:后者曾經(jīng)會(huì)在相對(duì)導(dǎo)入超出其最高層級(jí)包時(shí)發(fā)生。

5、新增的模塊
在新增模塊方面,zoneinfo模塊為標(biāo)準(zhǔn)庫(kù)引入了 IANA 時(shí)區(qū)數(shù)據(jù)庫(kù)。
這是一個(gè)基于系統(tǒng)時(shí)區(qū)數(shù)據(jù)的實(shí)體 datetime.tzinfo 實(shí)現(xiàn),示例如下圖所示。

6、改進(jìn)的模塊
除了新增的模塊外,Python3.9還對(duì)原有的一些模塊進(jìn)行了改進(jìn)。
Prasoon舉出了他認(rèn)為比較重要的一項(xiàng)——Random。
名為random.Random.randbytes的方法,可以用于生成隨機(jī)字節(jié)串,如下圖所示。

此外,還有cancel_futures。
Python3.9將新的 cancel_futures 形參,添加到 concurrent.futures.Executor.shutdown(),可以取消尚未開始運(yùn)行的所有掛起的 Future,而不必等待它們完成運(yùn)行再關(guān)閉執(zhí)行器。

當(dāng)然,除了這八大新特性外,Python官方文檔也更為詳細(xì)地列舉了此次更新的內(nèi)容。
感興趣的讀者可以戳此鏈接做更深入的了解:
https://docs.python.org/zh-cn/3.9/whatsnew/3.9.html
關(guān)于作者

Pratham Prasoon是一位16歲的印度高中生,對(duì)金融充滿激情,對(duì)編程世界充滿好奇,自稱是一個(gè)科學(xué)極客(science geek)。
作為一名編程人員,他認(rèn)為自己是「工具不可知」類型選手,也就是說(shuō),沒(méi)有特別唯一是使用的編程語(yǔ)言,而是會(huì)根據(jù)自己的目的而做出選擇。
目前,他正在學(xué)習(xí)React、 Flask、Django和Tensorflow。
參考鏈接:
https://twitter.com/PrasoonPratham/status/1313392420038483968
如果文章對(duì)你有幫助,歡迎轉(zhuǎn)發(fā)/點(diǎn)贊/收藏~
零基礎(chǔ)學(xué) Python,看下嘛 送109元的零基礎(chǔ)視頻課 只需7天時(shí)間,跨進(jìn)Python編程大門,已有3800+加入 【基礎(chǔ)】0基礎(chǔ)入門python,24小時(shí)有人快速解答問(wèn)題;
【提高】40多個(gè)項(xiàng)目實(shí)戰(zhàn),老手可以從真實(shí)場(chǎng)景中學(xué)習(xí)python;
【直播】不定期直播項(xiàng)目案例講解,手把手教你如何分析項(xiàng)目;
【分享】?jī)?yōu)質(zhì)python學(xué)習(xí)資料分享,讓你在最短時(shí)間獲得有價(jià)值的學(xué)習(xí)資源;圈友優(yōu)質(zhì)資料或?qū)W習(xí)分享,會(huì)不時(shí)給予贊賞支持,希望每個(gè)優(yōu)質(zhì)圈友既能賺回加入費(fèi)用,也能快速成長(zhǎng),并享受分享與幫助他人的樂(lè)趣。
【人脈】收獲一群志同道合的朋友,并且都是python從業(yè)者
【價(jià)格】本著布道思想,只需 69元 加入一個(gè)能保證學(xué)習(xí)效果的良心圈子。【贈(zèng)予】?jī)r(jià)值109元 0基礎(chǔ)入門在線課程,免費(fèi)送給圈友們,供鞏固 覺(jué)得不錯(cuò),點(diǎn)個(gè)“在看”然后轉(zhuǎn)發(fā)出去

