python3.9特性_Python3.9的7个特性
作者|PADHMA
編譯|VK
來(lái)源|Analytics Vidhya
介紹
正如著名作家韋恩?W?戴爾所說(shuō),
改變你看待事物的方式 你所看待的事物也會(huì)改變
當(dāng)Python的新版本問(wèn)世時(shí),許多人擔(dān)心向后兼容性問(wèn)題和其他問(wèn)題。但是如果你喜歡Python,你一定會(huì)對(duì)新更新中發(fā)布的特性感到興奮。
Python的最新版本將于2020年10月5日(星期一)發(fā)布。本文為你提供了一個(gè)python3.9特性的列表,你現(xiàn)在可以嘗試這些特性。
更新Python
讓我們首先更新到python的新版本。如果不確定當(dāng)前使用的版本,請(qǐng)使用下面的代碼檢查當(dāng)前版本。
在cmd中,鍵入
要更新你的版本,請(qǐng)轉(zhuǎn)到Python下載頁(yè)面,獲取安裝包并開(kāi)始安裝。注意:請(qǐng)確保更新環(huán)境變量中的路徑。
現(xiàn)在我們有了最新的版本,是時(shí)候檢查一下有什么新特性了。
1.詞典更新
字典是Python中最有用和最常用的數(shù)據(jù)結(jié)構(gòu)之一。新版本優(yōu)化了合并和更新詞典的方式。
1.1合并詞典
假設(shè)我們有兩本字典dict1和dict2,
dict1包含汽車的名稱和型號(hào),而dict2包含發(fā)動(dòng)機(jī)和重量。
現(xiàn)在我們想合并這兩個(gè)字典,因?yàn)樗鼈儼P(guān)于同一輛車的信息。在python3.8及更早版本中,要合并兩個(gè)字典,我們可以使用
內(nèi)置update方法:
或是表達(dá)式**:
這有時(shí)會(huì)帶來(lái)不便和麻煩。
在Python3.9.0中,我們使用| union運(yùn)算符對(duì)語(yǔ)法進(jìn)行了改進(jìn),以合并兩個(gè)dict,
這種方式非常干凈、簡(jiǎn)潔、坦率。它還提高了代碼的可讀性。
如果兩個(gè)字典有一個(gè)公共鍵,那么第二個(gè)字典中的值將被保留。
1.2更新字典
為了在Python3.8或更早版本中使用新的鍵值對(duì)更新現(xiàn)有字典,我們可以
使用update方法,
或者用iterable更新,
在3.9中,我們現(xiàn)在有了update操作符|=它以更簡(jiǎn)單的方式完成相同的工作。
在這里,|=的工作原理類似于擴(kuò)充賦值運(yùn)算符。
dict1 |=dict2表示dict1=dict1 | dict2
2類型提示
在正常情況下,我們不在Python中指定數(shù)據(jù)類型。但是在某些情況下,我們可能需要一個(gè)變量來(lái)表現(xiàn)某種類型。在這種情況下,Python的靈活性可能會(huì)令人討厭。從Python3.5開(kāi)始,我們可以指定類型,但這次更新使事情變得更加簡(jiǎn)單。
在這種情況下,傳遞給函數(shù)的值的類型非常重要。雖然代碼中沒(méi)有錯(cuò)誤,但是傳遞一個(gè)字符串會(huì)將同一個(gè)字符串重復(fù)兩次。
在最新版本中,通過(guò)類型提示(type hinting)我們可以將期望的類型指定為int,
3字符串方法
str對(duì)象增加了兩個(gè)新特性。在探索性的數(shù)據(jù)分析過(guò)程中,這個(gè)特性有時(shí)會(huì)很有用。
從函數(shù)中刪除前綴
從字符串中刪除后綴
4數(shù)學(xué)函數(shù)
4.1 GCD
對(duì)現(xiàn)有的數(shù)學(xué)函數(shù)進(jìn)行了修改。在早期版本中,計(jì)算GCD的函數(shù)只接受兩個(gè)數(shù)字。但現(xiàn)在,它可以應(yīng)用于任何數(shù)量的值。
4.2 LCM
數(shù)學(xué)模塊中添加了一個(gè)新函數(shù)來(lái)計(jì)算LCM。與GCD函數(shù)一樣,LCM函數(shù)也接受任意數(shù)量的值。
4.3 Nextafter
這個(gè)math.nextafter()函數(shù)接受x和y兩個(gè)參數(shù)。python3.9的這個(gè)特性是一個(gè)函數(shù),考慮到浮點(diǎn)數(shù)精度,它是x向y的下一個(gè)浮點(diǎn)數(shù)。
4.4 ulp
假設(shè)我們沒(méi)有64位計(jì)算機(jī)。相反,我們只有3位數(shù)字。用這三個(gè)數(shù)字我們可以表示像3.14這樣的數(shù)字,但不能表示3.141。對(duì)于3.14,我們可以表示的最接近的較大數(shù)字是3.15,這兩個(gè)數(shù)字相差1 ULP(最后一位的單位),即0.1。返回值與這個(gè)示例相當(dāng),但與您的計(jì)算機(jī)的實(shí)際精度相同。
5一致的包導(dǎo)入錯(cuò)誤
這與其說(shuō)是一個(gè)特性,不如說(shuō)是一個(gè)修復(fù)。當(dāng)以前的Python導(dǎo)入版本出現(xiàn)不一致時(shí),它的早期導(dǎo)入版本出現(xiàn)了 不一致的錯(cuò)誤。
builtins.__import__() 引發(fā) ValueError
importlib.__import__() 引發(fā) ImportError
__import__()現(xiàn)在引發(fā)ImportError而不是ValueError,這更有意義。
6隨機(jī)字節(jié)生成
random模塊中引入了一個(gè)名為randbytes的新方法來(lái)生成隨機(jī)字節(jié)。Python已經(jīng)可以通過(guò)3個(gè)不同的函數(shù)生成隨機(jī)字節(jié)
os.getrandom()
os.urandom()
secrets.token_bytes()
但它們不能產(chǎn)生偽隨機(jī)模式。
這個(gè)random.random.randbytes函數(shù)可以以受控的方式生成隨機(jī)字節(jié),并且可以通過(guò)設(shè)置種子復(fù)制結(jié)果。不過(guò),它只能在安全性不重要的情況下使用。
7支持IANA時(shí)區(qū)
在時(shí)區(qū)庫(kù)zoneinfo中引入了一個(gè)新的支持IANA時(shí)區(qū)的模塊。
考慮一個(gè)將印度標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)換為德里當(dāng)前時(shí)間的示例。在3.9之前,我們會(huì)通過(guò)pip安裝pytz,
對(duì)于zoneinfo模塊,這是非常直接的。你可以直接導(dǎo)入ZoneInfo類。
結(jié)論
除此之外,我們現(xiàn)在還有新的高性能的基于PEG的解析器、Graphlib模塊、異步和多處理改進(jìn)、HTTP狀態(tài)代碼和一堆冗余特性被刪除。點(diǎn)此了解更多:https://docs.python.org/3.9/whatsnew/3.9.html
總結(jié)
以上是生活随笔為你收集整理的python3.9特性_Python3.9的7个特性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: keras faster物体检测_【开源
- 下一篇: python手把手入门_新手必看:手把手