作者|PADHMA
編譯|VK
來源|Analytics Vidhya
介紹
正如著名作家韋恩?W?戴爾所說,
改變你看待事物的方式 你所看待的事物也會改變
當Python的新版本問世時,許多人擔心向后兼容性問題和其他問題,但是如果你喜歡Python,你一定會對新更新中發布的特性感到興奮,
Python的最新版本將于2020年10月5日(星期一)發布,本文為你提供了一個python3.9特性的串列,你現在可以嘗試這些特性,
更新Python
讓我們首先更新到python的新版本,如果不確定當前使用的版本,請使用下面的代碼檢查當前版本,
在cmd中,鍵入

要更新你的版本,請轉到Python下載頁面,獲取安裝包并開始安裝,注意:請確保更新環境變數中的路徑,
現在我們有了最新的版本,是時候檢查一下有什么新特性了,
1.詞典更新
字典是Python中最有用和最常用的資料結構之一,新版本優化了合并和更新詞典的方式,
1.1合并詞典
假設我們有兩本字典dict1和dict2,

dict1包含汽車的名稱和型號,而dict2包含發動機和重量,
現在我們想合并這兩個字典,因為它們包含關于同一輛車的資訊,在python3.8及更早版本中,要合并兩個字典,我們可以使用
內置update方法:

或是運算式**:

這有時會帶來不便和麻煩,
在Python3.9.0中,我們使用| union運算子對語法進行了改進,以合并兩個dict,

這種方式非常干凈、簡潔、坦率,它還提高了代碼的可讀性,
如果兩個字典有一個公共鍵,那么第二個字典中的值將被保留,

1.2更新字典
為了在Python3.8或更早版本中使用新的鍵值對更新現有字典,我們可以
使用update方法,

或者用iterable更新,

在3.9中,我們現在有了update運算子|=它以更簡單的方式完成相同的作業,

在這里,|=的作業原理類似于擴充賦值運算子,
dict1 |=dict2表示dict1=dict1 | dict2
2型別提示
在正常情況下,我們不在Python中指定資料型別,但是在某些情況下,我們可能需要一個變數來表現某種型別,在這種情況下,Python的靈活性可能會令人討厭,從Python3.5開始,我們可以指定型別,但這次更新使事情變得更加簡單,

在這種情況下,傳遞給函式的值的型別非常重要,雖然代碼中沒有錯誤,但是傳遞一個字串會將同一個字串重復兩次,
在最新版本中,通過型別提示(type hinting)我們可以將期望的型別指定為int,

3字串方法
str物件增加了兩個新特性,在探索性的資料分析程序中,這個特性有時會很有用,
從函式中洗掉前綴

從字串中洗掉后綴

4數學函式
4.1 GCD
對現有的數學函式進行了修改,在早期版本中,計算GCD的函式只接受兩個數字,但現在,它可以應用于任何數量的值,

4.2 LCM
數學模塊中添加了一個新函式來計算LCM,與GCD函式一樣,LCM函式也接受任意數量的值,

4.3 Nextafter
這個math.nextafter()函式接受x和y兩個引數,python3.9的這個特性是一個函式,考慮到浮點數精度,它是x向y的下一個浮點數,

4.4 ulp
假設我們沒有64位計算機,相反,我們只有3位數字,用這三個數字我們可以表示像3.14這樣的數字,但不能表示3.141,對于3.14,我們可以表示的最接近的較大數字是3.15,這兩個數字相差1 ULP(最后一位的單位),即0.1,回傳值與這個示例相當,但與您的計算機的實際精度相同,

要詳細了解ULP,請查看:https://matthew-brett.github.io/teaching/floating_error.html
5一致的包匯入錯誤
這與其說是一個特性,不如說是一個修復,當以前的Python匯入版本出現不一致時,它的早期匯入版本出現了 不一致的錯誤,
builtins.__import__() 引發 ValueError
importlib.__import__() 引發 ImportError
__import__()現在引發ImportError而不是ValueError,這更有意義,
6隨機位元組生成
random模塊中引入了一個名為randbytes的新方法來生成隨機位元組,Python已經可以通過3個不同的函式生成隨機位元組
- os.getrandom()
- os.urandom()
- secrets.token_bytes()
但它們不能產生偽隨機模式,
這個random.random.randbytes函式可以以受控的方式生成隨機位元組,并且可以通過設定種子復制結果,不過,它只能在安全性不重要的情況下使用,
7支持IANA時區
在時區庫zoneinfo中引入了一個新的支持IANA時區的模塊,
考慮一個將印度標準時間轉換為德里當前時間的示例,在3.9之前,我們會通過pip安裝pytz,

對于zoneinfo模塊,這是非常直接的,你可以直接匯入ZoneInfo類,

結論
除此之外,我們現在還有新的高性能的基于PEG的決議器、Graphlib模塊、異步和多處理改進、HTTP狀態代碼和一堆冗余特性被洗掉,點此了解更多:https://docs.python.org/3.9/whatsnew/3.9.html
原文鏈接:https://www.analyticsvidhya.com/blog/2020/10/7-exciting-python-3-9-feature-to-know/
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205084.html
標籤:其他
