自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

新方向、新功能:Python3.9 完整版面世了

開發(fā) 前端
很顯然,Python3.9是標志這一著名編程語言從舊路線演化到新路徑的轉折點。本文就將帶大家探索其新功能,了解Python的未來走向。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

很顯然,Python3.9是標志這一著名編程語言從舊路線演化到新路徑的轉折點。本文就將帶大家探索其新功能,了解Python的未來走向。

[[349632]]

Python 的新方向

此次更新有兩個重大變化,雖然直觀上不受影響,但要開始注意了:作為一種語言,Python的發(fā)展將略有不同。簡而言之,可總結為:

  • Python對解析器的限制
  • 版本更小,迭代更頻繁

1. LL(1) 和 PEG

大約30年前,吉多·范·羅森寫了pgen,這是為 Python 編寫的第一批代碼之一,至今仍被用作Python的解析器。Pgen的編寫基于LL(1)的語法變體,這標志著解析器若要全方位讀取代碼,只需先行令牌。這也基本上說明Python的開發(fā)是有限的,因為:

  • 先行令牌限制了語法規(guī)則的表現(xiàn)力。
  • 由于當前Python已包含非LL(1)語法,解析器迂回方案繁雜,使過程復雜化。
  • 即使有這些解決方案,情況也很受限。規(guī)則可以改變但不能違反。
  • 使用LL(1)特定的左遞歸語法可能會使解析樹分析無限循環(huán),從而導致棧溢出。

基于LL(1)的解析器的這些屬性限制了Python可能實現(xiàn)的價值,而Python 3.9打破了這些限制,這要歸功于閃亮新星PEG解析器,PEP617有所概述。我們不會很快感受到這一點。在Python 3.10出來之前,新解析器不會更改;但之后,Python將會沖破LL(1)的限制,大顯身手。

2. 開發(fā)周期

Python的發(fā)布計劃將從18 個月縮減到 12 個月。

在 3.9 版本發(fā)布之前,Python原本的發(fā)布計劃是間隔18個月一版的,而現(xiàn)在,它進入了為期12個月的發(fā)布時間表[PEP 602]。從前新版本每18個月才亮相一次,現(xiàn)在一年一換。這也意味著Python:

  • 不再一次性上線大量新功能。
  • 變化更循序漸進,但由于新功能的發(fā)布,修復將會更快完成。
  • 發(fā)布日期更規(guī)律,新Python將在每年10月面世。

所以從本質上講,本文主要關注12個月周期內較小的增量變化,而不是每18個月發(fā)生的較大變化。與此同時,預計開發(fā)速度將保持不變。

二、新功能

1. 類型提示

早在2008年,Python 3就引入了函數(shù)注釋——類型提示的前身。它雖然不是特別強大,但是一個重要開端。

Python類型提示的實時狀態(tài)是多次添加和修改注釋和鍵入的變化累積。

此后又增加了其他功能。如今,3.9版本將各功能與整潔的新語法結合起來,以取得Python類型提示的最新發(fā)展。

現(xiàn)在,我們可以輕松地指定變量的預期數(shù)據類型。如果寫了一些沒有意義的東西(比如把字符串傳遞給整數(shù)),編輯器就會提醒有錯誤產生。雖然不會指出錯誤,但在使用復雜代碼庫時,它可幫了大忙。

在Python中,用“+”連接兩個字符串是絕對有效的。因此,“add_int”函數(shù)接收兩個字符串不會引發(fā)任何錯誤。

無類型提示(左);Python3.9帶類型提示(右)。

有了新的類型提示功能,只需在函數(shù)定義的參數(shù)中添加 :int,編輯器就會立即識別錯誤。

指定預期的輸入和輸出數(shù)據類型。

也可以使用->type 語法來確定函數(shù)的值輸出類型。

可將不同類型結合在一起來創(chuàng)建更復雜的注釋。

不要局限于簡單的預定義類型!

2. 字符串方法

雖然不像其他變化那樣酷,但此方法被使用頻率極高。有兩種用于刪除字符串前綴和后綴的新方法:

  1. "foo bar".removeprefix("fo") 
  2. [Out]: 'o bar' 
  1. "foo bar".removesuffix("ar") 
  2. [Out]: 'foo b' 

3. 合并字典

有兩個新運算符來合并字典。首先是合并運算符 |:

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

然后更新運算符就地合并:

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

作為一種編程語言,Python未來發(fā)展無限,見證該語言如何隨著新的發(fā)布計劃和解析器而發(fā)展將一定會是很有趣的!

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2018-11-16 10:10:09

2020-11-01 17:01:00

Python字典開發(fā)

2020-11-11 00:40:35

云計算混合云私有云

2017-02-09 15:30:54

大數(shù)據 時代

2009-08-28 10:25:24

思科認證思科認證新方向CCNP無線認證

2021-04-19 23:19:05

人工智能數(shù)據軟件

2010-04-26 01:07:07

雙線負載均衡

2022-09-06 14:57:27

物聯(lián)網物聯(lián)網安全

2020-04-27 15:43:45

Python 3.9python開發(fā)

2020-12-23 16:21:31

區(qū)塊鏈醫(yī)療大數(shù)據

2012-08-13 15:52:32

PTNPTN環(huán)網

2010-09-14 14:07:56

2009-03-11 08:46:46

Chrome瀏覽器更新

2010-09-30 14:55:39

2024-11-29 08:35:38

2020-11-20 07:20:37

人工智能AI

2024-04-18 07:11:17

生成式AI數(shù)字孿生模型人工智能

2017-07-24 12:00:16

虛擬化數(shù)據中心IT

2009-12-25 16:54:49

2012-08-22 11:28:39

數(shù)據虛擬化
點贊
收藏

51CTO技術棧公眾號