點擊上方「Github中文社區」,關注
看遍Github,每天提升
綜合自:量子位
hello,我是huber!
Python3.9,「千呼萬喚始出來」。
先來速看下此次發布版本的重點。
新語法特性:
PEP 584,為 dict 增加合併運算符。
PEP 585,標準多項集中的類型標註泛型。
PEP 614,放寬對裝飾器的語法限制。
新內置特性:
新標準庫中的特性:
解釋器方面的改進:
新庫模塊:
為了更好地理解此次更新,Twitter上一位16歲少年Pratham Prasoon,還自製了一張「Python 3.9新特性必知圖」。
列出了他認為比較重要的八大新特性,廣受網友好評。
此次「字典的合併與更新運算符」的新特性,是Python3.9的一大亮點。
合併 (|) 與更新 (|=) 運算符已被加入內置的 dict 類,擴充了現有的 dict.update 和 {**d1, **d2} 字典合併方法。
在Prasoon提供的圖中也展示了對應的示例,如下圖所示:
在Python的官方文檔,以及Prasoon的圖表中,也著重展示了新的用於「移除前綴和後綴的字符串」方法。
str.removeprefix(prefix)和str.removesuffix(suffix)可以方便地從字符串中,移除不需要的前綴或後綴:
在類型標註方面,現在可以使用內置的多項集類型(例如 list 和 dict)作為通用類型,而不必再從 typing 導入對應的大寫形式類型名。
__import__() 現在會引發 ImportError 而不是 ValueError。
至於原因,在Python的官方文檔中有相應的解釋:後者曾經會在相對導入超出其最高層級包時發生。
在新增模塊方面,zoneinfo模塊為標準庫引入了 IANA 時區資料庫。
這是一個基於系統時區數據的實體 datetime.tzinfo 實現,示例如下圖所示。
除了新增的模塊外,Python3.9還對原有的一些模塊進行了改進。
Prasoon舉出了他認為比較重要的一項——Random。
名為random.Random.randbytes的方法,可以用於生成隨機字節串,如下圖所示。
此外,還有cancel_futures。
Python3.9將新的 cancel_futures 形參,添加到 concurrent.futures.Executor.shutdown(),可以取消尚未開始運行的所有掛起的 Future,而不必等待它們完成運行再關閉執行器。
當然,除了這八大新特性外,Python官方文檔也更為詳細地列舉了此次更新的內容。
感興趣的讀者可以戳文末連結做更深入的了解。
關於作者Pratham Prasoon是一位16歲的印度高中生,對金融充滿激情,對編程世界充滿好奇,自稱是一個科學怪才(science geek)。
作為一名編程人員,他認為自己是「工具不可知」類型選手,也就是說,沒有特別唯一是使用的程式語言,而是會根據自己的目的而做出選擇。
目前,他正在學習React、 Flask、Django和Tensorflow。
參考連結:
https://docs.python.org/zh-cn/3.9/whatsnew/3.9.html
https://twitter.com/PrasoonPratham/status/1313392420038483968