Python 3.9要发布啦,快来看看有哪些新特性?
Python一直在馬不停蹄的更新,最近又要發(fā)布Python3.9的正式版了。該版本包含了一些新特性,下面一起來看看吧!!!
本文主要介紹以下方面:
- 新增字典合并操作符 | 和|=
- 新增函數(shù)的參數(shù)、返回值的類型提示
- 新增字符串移除前綴和后綴的函數(shù)
- 新的python解析器
一、新增字典合并操作符 | 和|=
新增方法:使用 | 字符合并字典,如果合并時兩個字典的鍵值相同采用第二個字典的鍵值對
例如:
dict1 = {k1:'a',k2:'b',k3:'c'} dict2 = {k4:'d',k5:'e'} dict3 = dict1 | dict2 print(dict3)輸出結(jié)果
?{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
也可以使用 |= 操作符進行合并
例如:
dict1 = {k1:'a',k2:'b',k3:'c'} dict2 = {k4:'d',k5:'e'} dict1 |= dict2 print(dict1 )輸出結(jié)果
?{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
|= 操作符的好處是支持使用可迭代對象(如列表或生成器)的鍵值對更新字典
例如:
dict1 = {k1:'a',k2:'b',k3:'c'} dict2 = ((i,i**2) for i in range(3)) dict1 |= dict2 print(dict1 )輸出結(jié)果
?{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
如果把上述代碼中的dict1 |= dict2換成?dict3?|= dict1 + dict2則匯報TypeError,因為 | 只允許字典類型進行合并
我們來看看以前python是如何實現(xiàn)字典合并的呢?答案是使用字典的update()方法
例如:
dict1 = {k1:'a',k2:'b',k3:'c'} dict2 = {k4:'d',k5:'e'} dict3 = dict1.update(dict2) print(dict3)輸出結(jié)果:?
?{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
不過為什么不使用 + 進行字典合并呢?
二、新增函數(shù)參數(shù)、返回值的類型提示
python的動態(tài)類型的編程語言,不需要指定數(shù)據(jù)類型,但可以對數(shù)據(jù)類型進行建議,語法如下:
def twoSum(num1: int, num2: int=100) -> int:sum = num1 + num2return sum參數(shù)后面的冒號代表參數(shù)的類型建議,函數(shù)后面的箭頭代表函數(shù)返回值的類型建議
雖然有類型建議,但是不傳入建議的類型也不會報錯,比如傳入兩個字符串,也可以對兩個字符串進行相加。
有時候由于我們調(diào)用的時候可能不知道函數(shù)的建議參數(shù)類型和返回值類型,傳錯了就很尷尬,于是python3.9中增加了在調(diào)用的函數(shù)的地方給出類型提出,如下圖所示:
任何地方都可以使用類型提示,由于有了新的語法支持,看起來非常清爽。
三、新增字符串函數(shù)
在python3.9中新增了兩個函數(shù),一個是移除字符串前綴,一個是移除字符串后綴,語法如下:
"Hello World".removeprefix("Hel") "Hello World".removesuffix("Hel")四、新的python解析器
python目前主要使用一種基于LL(1)的語法,這種語法通過LL(1)解析器進行解析(從上到下從左到右地解析代碼)。
新的python解析器是基于PEG語法的。
由于本仙女對解析器等底層東東了解不多,也就不介紹太多啦
?
順便吐槽一句,python這么好用,阿里的測試為什么用java不用python呢,辛辛苦苦學java中
總結(jié)
以上是生活随笔為你收集整理的Python 3.9要发布啦,快来看看有哪些新特性?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 疏通Bug管道
- 下一篇: Python的类Class中__init