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

Python 3.8新功能盤點(diǎn):更快,更簡(jiǎn)潔,更一致,更現(xiàn)代化

開發(fā) 后端
Python 3.8是Python這個(gè)流行語言的最新版本,適用于從自動(dòng)化腳本編寫、機(jī)器學(xué)習(xí)到Web開發(fā)的所有內(nèi)容?,F(xiàn)在可以獲得官方測(cè)試版,Python 3.8帶來了許多靈活的語法更改,內(nèi)存共享,更高效的序列化和反序列化,修改后的詞典等等。
[[268625]]

 

從功能強(qiáng)大的新任務(wù)語法到底層大更新,Python 3.8邁向更現(xiàn)代的Python代碼庫。

3.8是Python這個(gè)流行語言的***版本,適用于從自動(dòng)化腳本編寫、機(jī)器學(xué)習(xí)到Web開發(fā)的所有內(nèi)容。現(xiàn)在可以獲得官方測(cè)試版,Python 3.8帶來了許多靈活的語法更改,內(nèi)存共享,更高效的序列化和反序列化,修改后的詞典等等。

當(dāng)然,Python 3.8也***了各種性能改進(jìn)??傮w結(jié)果是讓Python更快,更簡(jiǎn)潔,更一致,更現(xiàn)代化。以下是Python 3.8中***,最重要的內(nèi)容。

賦值表達(dá)式

Python 3.8中最明顯的變化是賦值表達(dá)式,它使用了酷似海象的運(yùn)算符(:=)。賦值表達(dá)式允許在表達(dá)式的上下文中將值賦給變量,甚至是尚不存在的變量,而不是作為獨(dú)立語句。

  1. while (line := file.readline()) != "end"
  2.  print(chunk) 

在此示例中,如果變量行不存在,則創(chuàng)建變量行,然后從file.readline()分配值。然后檢查行以查看它是否等于“結(jié)束”。如果不是,則讀取下一行,存儲(chǔ)在行中,測(cè)試,等等。

賦值表達(dá)式遵循Python中可理解的簡(jiǎn)潔性的傳統(tǒng),包括列表推導(dǎo)。在這里,我們的想法是減少一些易于出現(xiàn)在某些Python編程模式中的繁瑣樣板。例如,上面的代碼片段通常需要多于兩行代碼才能表達(dá)。

強(qiáng)制某些參數(shù)僅為位置

函數(shù)定義的新語法,僅位置參數(shù),允許開發(fā)人員強(qiáng)制某些參數(shù)僅為位置。這消除了關(guān)于函數(shù)定義中哪些參數(shù)是位置的以及哪些是關(guān)鍵字參數(shù)的任何歧義。

僅限位置參數(shù)可以定義場(chǎng)景,例如,函數(shù)接受任何關(guān)鍵字參數(shù)但也可以接受一個(gè)或多個(gè)位置。 Python內(nèi)置函數(shù)通常就是這種情況,因此為Python開發(fā)人員提供了一種方法,可以增強(qiáng)語言的一致性。

Python文檔中的一個(gè)例子:

  1. def pow(x, y, z=None, /): 
  2.  r = x**y 
  3.  if z is not None: 
  4.  r %= z 
  5.  return r 

/將位置與關(guān)鍵字參數(shù)分開; 在這個(gè)例子中,所有的參數(shù)都是位置的。在以前的Python版本中,z將被視為關(guān)鍵字參數(shù)。 給定上述函數(shù)定義,pow(2,10)和pow(2,10,5)是有效調(diào)用,但pow(2,10,z = 5)不是。

F字符串調(diào)試支持

f-string格式提供了一種方便(且性能更高)的方式來在同一表達(dá)式中打印文本和計(jì)算值或變量:

  1. x = 3  
  2. print(f'{x+1}'

這將打印4。

在f字符串表達(dá)式的末尾添加=會(huì)打印f-string表達(dá)式本身的文本,后跟值:

  1. x = 3 
  2. print (f'{x+1=}'

這將打印x + 1 = 4。

多處理模塊共享內(nèi)存

使用Python 3.8,多處理模塊現(xiàn)在提供了一個(gè)SharedMemory類,允許在不同的Python進(jìn)程之間創(chuàng)建和共享內(nèi)存區(qū)域。

在以前的Python版本中,只能通過將數(shù)據(jù)寫入文件,通過網(wǎng)絡(luò)套接字發(fā)送或使用Python的pickle模塊對(duì)其進(jìn)行序列化來在進(jìn)程之間共享數(shù)據(jù)。共享內(nèi)存為在進(jìn)程之間傳遞數(shù)據(jù)提供了更快的路徑,使Python能夠更有效地使用多個(gè)處理器和處理器內(nèi)核。

共享內(nèi)存段可以分配為字節(jié)的原始區(qū)域,或者它們可以使用不可變的類似列表的對(duì)象,這些對(duì)象存儲(chǔ)Python對(duì)象的一小部分 - 數(shù)字類型,字符串,字節(jié)對(duì)象和None對(duì)象。

打字模塊的改進(jìn)

Python是動(dòng)態(tài)類型的,但支持通過輸入模塊使用類型提示,以允許第三方工具驗(yàn)證Python程序。 Python 3.8為鍵入添加了新元素,以便更加可靠地進(jìn)行檢查:

  • final decorator 和Final type annotation表明decorated/annotated 的對(duì)象不應(yīng)在任何位置被覆蓋,子類化或重新分配。
  • Literal類型將表達(dá)式限制為特定值或值列表,不一定是相同類型。
  • TypedDict類型允許創(chuàng)建字典,其中與某些鍵關(guān)聯(lián)的值僅限于一個(gè)或多個(gè)特定類型。 請(qǐng)注意,這些限制僅限于在編譯時(shí)可以確定的內(nèi)容,而不是在運(yùn)行時(shí)。

新版本的pickle協(xié)議

Python的pickle模塊提供了一種序列化和反序列化Python數(shù)據(jù)結(jié)構(gòu)的方法,例如,允許將字典原樣保存到文件中并在以后重新加載。不同版本的Python支持不同級(jí)別的pickle協(xié)議,更新版本支持更廣泛的功能和更高效的序列化。

使用Python 3.8引入的pickle第5版提供了一種新方法,來pickle實(shí)現(xiàn)Python緩沖區(qū)協(xié)議的對(duì)象,例如字節(jié),內(nèi)存視圖或NumPy數(shù)組。新的pickle減少了必須為這些對(duì)象制作的內(nèi)存副本數(shù)量。

像NumPy和Apache Arrow這樣的外部庫在他們的Python綁定中支持新的pickle協(xié)議。新的pickle也可以作為PyPI的Python 3.6和Python 3.7的附件提供。

可逆詞典

Python中的字典完全用Python 3.6重寫,使用PyPy項(xiàng)目提供的新實(shí)現(xiàn)。除了更快更緊湊外,詞典現(xiàn)在還具有其元素的固有順序;它們是在添加時(shí)訂購的,就像列表一樣。 Python 3.8允許在字典上使用reversed()。

性能改進(jìn)

  • 許多內(nèi)置方法和函數(shù)已經(jīng)加速了20%到50%,因?yàn)槠渲性S多方法和函數(shù)不必要地轉(zhuǎn)換傳遞給它們的參數(shù)。
  • 新的操作碼緩存可以加速解釋器中的某些指令。但是,目前唯一實(shí)現(xiàn)的加速是針對(duì)LOAD_GLOBAL操作碼,現(xiàn)在快40%。計(jì)劃對(duì)更高版本的Python進(jìn)行類似的優(yōu)化。
  • 文件復(fù)制操作(例如shutil.copyfile()和shutil.copytree())現(xiàn)在使用特定于平臺(tái)的調(diào)用和其他優(yōu)化來加速操作。
  • 由于優(yōu)化利用列表構(gòu)造函數(shù)對(duì)象的長(zhǎng)度(如果事先已知),現(xiàn)在新創(chuàng)建的列表現(xiàn)在平均比以前小12%。
  • 在Python 3.8中,在新式類(例如,類A(對(duì)象))上寫入類變量要快得多。
  • operator.itemgetter()和collections.namedtuple()也有新的速度優(yōu)化。

Python C API和CPython改進(jìn)

在Python的***版本中,主要的工作是重構(gòu)CPython中使用的C API,這是用C編寫的Python的參考實(shí)現(xiàn)。到目前為止,這項(xiàng)工作只產(chǎn)生了增量變化,但它們正在加起來:

  • 用于Python初始化配置的新C API允許對(duì)Python的初始化例程進(jìn)行更嚴(yán)格的控制和更詳細(xì)的反饋。 這樣可以更輕松地將Python運(yùn)行時(shí)嵌入到應(yīng)用程序中,并以編程方式將啟動(dòng)參數(shù)傳遞給Python。 這個(gè)新API還旨在確保所有Python的配置控件都具有單一,一致的主頁,以便將來更改(如Python的新UTF-8模式)更容易插入。
  • 另一個(gè)用于CPython的新C API,即“vectorcall”調(diào)用協(xié)議,允許更快地調(diào)用內(nèi)部Python方法,而無需創(chuàng)建臨時(shí)對(duì)象來處理調(diào)用。API仍然不穩(wěn)定,但已暫時(shí)可用。 計(jì)劃是從Python 3.9開始最終確定它。
  • Python運(yùn)行時(shí)審計(jì)掛鉤在Python運(yùn)行時(shí)中提供了兩個(gè)API,用于掛鉤事件并使它們可以觀察到外部工具,如測(cè)試框架或日志記錄和審計(jì)系統(tǒng)。 
責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2013-03-01 09:17:20

Windows 8

2021-01-31 08:00:48

Windows 10Windows操作系統(tǒng)

2011-07-19 10:18:00

錢伯斯思科裁員

2015-09-08 10:48:55

UU安全

2023-10-12 10:11:19

2024-03-27 00:00:10

勒索軟件攻擊勒索軟件安全

2015-08-05 15:53:35

power星環(huán)

2015-07-02 14:21:04

2024-11-11 17:00:27

字典壓縮Python代碼

2015-07-21 17:18:19

用友iUAP

2009-12-30 10:46:01

Ubuntu目標(biāo)

2014-07-18 15:15:50

交換機(jī)華為

2011-06-15 09:53:05

思杰虛擬化

2018-11-30 10:05:36

微軟Office圖標(biāo)

2024-03-12 10:13:08

LodashJavaScript工具庫

2021-01-06 08:05:47

Chrome瀏覽器

2011-05-12 10:48:49

CSS清理浮動(dòng)

2020-03-19 18:38:37

Windows 10Windows磁盤

2013-11-26 17:02:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)