來自16 歲高中生的暴擊: Python3.9 的「新特性必知圖」火了

2021-02-20 Github中文社區

點擊上方「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__()特性修改

__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

相關焦點