2021年的Python 時間軸和即將推出的功能詳解
我們目前生活在Python 3.8的穩(wěn)定時代,上周發(fā)布了Python的最新穩(wěn)定版本3.8.4。 Python 3.9已經(jīng)處于其開發(fā)的beta階段,并且2020年7月3日預(yù)發(fā)布了beta版本(3.9.0b4),第五版beta預(yù)定于明天發(fā)布。 3.9的第一個穩(wěn)定版本預(yù)計將在2020年10月發(fā)布。Python3.10的開發(fā)也將于2020年5月開始,并且第一個beta版本預(yù)計在2021年5月開始。
對于Python愛好者來說,顯然,有趣的時代即將到來。 瀏覽三個版本(3.8、3.9和3.10)的發(fā)布時間表,敦促我在即將到來的有趣的Python開發(fā)時間表中編制關(guān)鍵日期。
"我媽媽總是說生活就像一盒巧克力。 你永遠(yuǎn)都不知道會得到什么。" - 阿甘
通常,在開發(fā)周期中會有4–5個beta版本,并且在第一個beta版本之后的版本中不會引入任何新功能。 對于3.8,beta-1已于2019年6月發(fā)布;對于3.9,beta-1已于2020年5月發(fā)布。盡管未來的Python 3.10剛剛啟動,但官方網(wǎng)站已經(jīng)在其一些亮點中進(jìn)行了簡要介紹。
這篇文章旨在簡要介紹時間軸,并預(yù)覽即將發(fā)布的新Python版本的主要功能,以改編Python網(wǎng)站上的官方示例。 請注意,我們可能會在3.10版中看到更多新功能,并且隨著時間的推移,我將繼續(xù)更新以下列表。
突出顯示Python 3.10中的功能
(1) 二進(jìn)制表示中的頻率為1
將引入一個新的方法bit_count(),該方法將返回整數(shù)的二進(jìn)制表示形式中存在的個數(shù)。 結(jié)果將獨立于整數(shù)的符號。 此功能的一個用例是在信息論中,其中對于兩個等長的字符串,您可以找到兩個字符串不同的位置的總數(shù)。 這種差異稱為漢明距離(參見Wiki)。 在此處閱讀有關(guān)Python中此功能的歷史記錄。
在后臺,此方法僅調(diào)用strtype asstr.count('1')的count方法。 以下示例對此進(jìn)行了說明:
# Positive integer
>>> num = 108
# Let's first get the binary representation of num
>>> bin(num)
'0b1101100'
>>> num.bit_count()
4
# Negative integer
>>> num = -108
>>> bin(num)
'-0b1101100'
>>> num.bit_count()
4
# Under the hood
>>> bin(num).count('1')
(2) 壓縮將是"嚴(yán)格的"
新的可選關(guān)鍵字參數(shù)strict將添加到zip函數(shù)中。 如果passstrict = True,則壓縮的可迭代項的長度必須相等,否則將引發(fā)ValueError。 在Python 3.9之前,如果要壓縮兩個不等長的列表,則將得到長度等于較小列表的輸出。
如以下示例所示,在Python 3.10之前,zip()函數(shù)忽略了第一個列表中不匹配的'D'。 相比之下,Python 3.10將引發(fā)ValueError。 鑒于壓縮相同數(shù)量項目的直觀性,我喜歡此功能,因為它喚醒您重新檢查您的輸入。 在PEP 618上了解有關(guān)此問題的更多信息。
在Python 3.10之前:
>>> list(zip(['A', 'B', 'C', 'D'], ['Apple', 'Ball', 'Cat']))
[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]
在Python 3.10中:
>>> list(zip(['A', 'B', 'C', 'D'], ['Apple', 'Ball', 'Cat'], strict=True)) Traceback (most recent call last): ...ValueError: zip() argument 1 is longer than argument 2
(3) 字典的只讀視圖
字典的三個鍵方法keys(),values()和items()返回類似于集合的對象,這些對象分別對應(yīng)于字典的鍵,值和項目的動態(tài)視圖。 您在這兩個視圖中所做的任何更改也將反映在原始詞典中。
在Python 3.10中,從以上三種方法返回的所有視圖都將具有一個稱為mapping的附加屬性,該屬性將返回該映射的只讀代理。 該只讀代理將包裝視圖引用的原始字典。 以下示例對此進(jìn)行了說明:
讓我們定義一個字典并將其鍵和值存儲在單獨的變量中:
>>> fruits = {'Mangos': 12, 'Figs': 100, 'Guavas': 3, 'Kiwis': 70}
>>> keys = fruits.keys()
>>> values = fruits.values()
>>> list(keys)
['Mangos', 'Figs', 'Guavas', 'Kiwis']
現(xiàn)在,我們使用thedel語句從此字典中刪除兩個元素。 如果現(xiàn)在打印鍵和值,您將看到它僅返回其余項目。 現(xiàn)在,原始詞典中的更改將反映在視圖中(此處為鍵和值)。
>>> del fruits['Figs'] >>> del fruits['Guavas'] >>> print (list(keys), list(values)) ['Mangos', 'Kiwis'] [12, 70]
現(xiàn)在,通過映射,您將仍然能夠找回原始字典的只讀代理。 cool! 是不是
# returns a read-only proxy of the original dictionary
>>> values.mapping
mappingproxy({'Mangos': 12, 'Figs': 100, 'Guavas': 3, 'Kiwis': 70})
>>> values.mapping['Guavas']
3
(4) 消除一些向后兼容性
集合模塊的抽象基類(ABC)的別名支持將從Python 3.10開始刪除。 因此,現(xiàn)在是停止忽略相應(yīng)的"棄用警告"并改編代碼的好時機。
高達(dá)Python 3.9.0b4(于2020年7月3日發(fā)布)
到現(xiàn)在為止,在DeprecationWarning中將直接從collections模塊中導(dǎo)入任何這些ABC。
>>> from collections import ABC_Name DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working
這使我到本文的結(jié)尾。 隨著Python 3.10宣布更多的發(fā)行要點,我將繼續(xù)將它們附加到本文中。 敬請期待,讓我們期待Python 3.10。 您可以在此處遵循當(dāng)前和即將發(fā)布的版本的發(fā)布時間表:3.8、3.9、3.10。
到此這篇關(guān)于2021年的Python 時間軸和即將推出的功能詳解的文章就介紹到這了,更多相關(guān)Python時間軸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python如何獲取apk的packagename和activity
這篇文章主要介紹了python如何獲取apk的packagename和activity,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
opencv-python圖像配準(zhǔn)(匹配和疊加)的實現(xiàn)
圖像配準(zhǔn)需是指對不同條件下得到的兩幅或多幅圖像進(jìn)行匹配、疊加的過程。本文詳細(xì)的介紹了如何使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
python網(wǎng)絡(luò)爬蟲實現(xiàn)發(fā)送短信驗證碼的方法
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲實現(xiàn)發(fā)送短信驗證碼的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Python批量解壓文件中出現(xiàn)中文亂碼的原因及解決方法
這篇文章主要給大家記一次Python批量解壓文件遇中文亂碼及解決過程,文中有詳細(xì)的圖解及代碼示例,具有一定的參考價值,需要的朋友可以參考下2023-08-08
Python數(shù)據(jù)庫編程之pymysql詳解
本文主要介紹了Python數(shù)據(jù)庫編程中pymysql,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05

