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

新版本嘗鮮:Python 3.9版本中的新功能有哪些?

開發(fā) 前端
又要到Python新版本發(fā)布的時刻了,測試版已然推出,完整發(fā)行版將在不久之后與我們見面。新版本中有許多值得期待的新功能,本文就先帶大家嘗嘗鮮。

本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。

又要到Python新版本發(fā)布的時刻了,測試版已然推出,完整發(fā)行版將在不久之后與我們見面。這無疑令技術(shù)愛好者們十分興奮,摩拳擦掌地等待上手一探究竟。

新版本中有許多值得期待的新功能,本文就先帶大家嘗嘗鮮。

[[333092]]

1. 字典合并

這是筆者最喜歡的新功能之一,它擁有優(yōu)美的語法。如果有兩個字典a和b需要合并,可以使用合并運算符:

合并(merge)操作符|:

  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'} 

如果字典共享一個公共鍵(common key),則使用第二個字典中的鍵值對:

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

使用迭代更新字典:|=運算符還有一個不錯的地方,即能夠通過可迭代對象(例如列表或生成器)使用新的鍵值對更新字典。

  1. a = {'a': 'one', 'b': 'two'} 
  2. b = ((i, i**2) for i in range(3))a |= b 
  3. print(a)[Out]: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4} 

如果嘗試使用標(biāo)準合并運算符|進行相同的操作,將產(chǎn)生一個類型錯誤(TypeError),因為它僅允許字典(dict)類型之間的合并操作。

新版本嘗鮮:Python 3.9版本中的新功能有哪些?

2. 字符串方法

這個功能看起來“其貌不揚”,但實則非常實用。新版本添加了兩個用于刪除前綴和后綴的新字符串方法:

  1. “ Hello world” .removeprefix(“ He”) 
  2. [Out]:“ llo world” 
  3. Hello world” .removesuffix(“ ld”) 
  4. [Out]:“ Hello wor” 

3. 新分析器

這是一個不可見的更改,但有可能成為Python未來發(fā)展中最重要的更改之一。

Python當(dāng)前使用的主要是基于LL(1)的語法,而該語法又可以由LL(1)分析器進行解析,該分析器使用單一的前向標(biāo)記符從上到下,從左到右地解析代碼。

筆者幾乎不知道它是如何工作的,但是可以指出一些由于Python使用這種方法導(dǎo)致的問題:

  • Python包含非LL(1)語法;當(dāng)前語法的某些部分使用了工作區(qū),從而造成不必要的復(fù)雜性。
  • LL(1)在Python語法中造成限制(沒有可用的工作區(qū))。此問題突出說明了以下代碼根本無法使用當(dāng)前分析器實現(xiàn)(引發(fā)語法錯誤):
    1. with (open("a_really_long_foo") as foo, 
    2.       open("a_really_long_bar")as bar): 
    3.     pass 
  • LL(1)在分析器中以左遞歸中斷。意味著含義特定的遞歸語法可能導(dǎo)致解析樹中的無限循環(huán)。

所有這些因素(還有很多根本無法理解的因素)嚴重限制了Python語言的發(fā)展。而基于PEG的新分析器將為Python開發(fā)人員提供更大的靈活性,人們會從Python 3.10開始注意到這一點。

4. 類型提示

Python是動態(tài)類型的,這意味著無需在代碼中指定數(shù)據(jù)類型。這一特性本身沒有問題,但有時可能會造成混淆。

從Python 3.5開始,用戶可以指定類型,但是操作起來非常麻煩。此次更新改變了這一點,舉個例子:

新版本嘗鮮:Python 3.9版本中的新功能有哪些?

無類型提示(左)vs3.9中帶類型提示(右)

add_int函數(shù)的目的是為數(shù)值自身添加相同的數(shù)值。但是編輯器并不知道這一點,因此完全可以使用+將兩個字符串加在一起,不會發(fā)出警告?,F(xiàn)在可以將期望的輸入類型指定為int。使用此功能,編輯器可以立即了解問題。

用戶還可以非常詳細地了解所包含的類型,例如:

新版本嘗鮮:Python 3.9版本中的新功能有哪些?

類型提示可以在任何地方使用,新語法讓代碼看起來更加整潔:

新版本嘗鮮:Python 3.9版本中的新功能有哪些?

將sum_dict的參數(shù)指定為dict,將返回值指定為整數(shù)型。在定義test時,也要確定其類型。

這些新功能確實讓人迫不及待,等不及的同學(xué)可以先去試試最新的Beta版本-3.9.0b3。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2010-02-23 17:44:48

Python 3.0

2010-05-24 19:09:01

SubVersion最

2015-10-19 10:07:24

OpenStackOpenStack L功能特性

2011-08-01 15:35:51

GlassFishJava 7

2010-07-23 09:53:29

SQL Server

2020-04-27 15:43:45

Python 3.9python開發(fā)

2009-06-17 09:24:34

學(xué)習(xí)strutsStruts新版本

2010-04-30 16:45:49

Fedora 13

2012-10-22 10:56:59

Ubuntu

2020-11-11 21:13:58

dotNET 5.0微軟

2022-03-17 15:49:55

微信

2019-04-26 09:16:51

存儲

2022-01-25 10:44:00

Windows 11微軟功能

2010-03-01 15:05:39

WPF

2017-08-22 21:42:51

WebVRFirefox瀏覽器

2013-11-13 15:39:50

OpenStack企業(yè)級功能

2015-06-17 09:17:52

2015-02-05 16:59:36

平安WiFiiOS

2022-04-15 11:51:48

Windows 11安全加密

2014-12-09 11:20:48

Docker網(wǎng)絡(luò)名字空間
點贊
收藏

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