Python 3.10 中 6 個(gè)興奮的新特性
新的 Python 版本推出了有趣的新功能。
Python 是當(dāng)今最流行的編程語(yǔ)言之一。它有廣泛的領(lǐng)域和應(yīng)用,從學(xué)習(xí)計(jì)算機(jī)科學(xué)的基礎(chǔ),到執(zhí)行復(fù)雜或者直接的科學(xué)計(jì)算任務(wù)來(lái)創(chuàng)建游戲。它的高級(jí)應(yīng)用甚至包含數(shù)據(jù)科學(xué)和量子計(jì)算。
Python的流行有很多原因。其中最主要的原因是Python和其他語(yǔ)言相比,通用性強(qiáng),簡(jiǎn)單易學(xué)。除此之外,Python的開(kāi)發(fā)和維護(hù)者——Python軟件基金會(huì)——一直致力于用新的方法改進(jìn)Python。
一周之前(2021年10月4日),一個(gè)新的Python版本發(fā)布了,Python 3.10。在新的版本中,Python 添加了獨(dú)特且有價(jià)值的功能,同時(shí)刪除了一些舊功能。我們可以將任何新軟件版本中添加或刪除的功能歸為多個(gè)類別,例如語(yǔ)法特性、添加到默認(rèn)庫(kù)或?qū)ΜF(xiàn)有特性的改進(jìn)。
Python 3.10 有幾個(gè)新的很酷的功能,使得使用 Python 成為一種更好的體驗(yàn)。在本文中,我將與您分享 6 個(gè)讓我最興奮的新特性。
更清楚的錯(cuò)誤追蹤
作為一個(gè)每天寫(xiě)Python 、教Python 的人,我深知遇到語(yǔ)法錯(cuò)誤的挫敗感。盡管一旦你掌握了Python和編程,就很容易修復(fù)語(yǔ)法錯(cuò)誤,但是我們還是希望錯(cuò)誤消息能給我們更好的提示,以幫助我們更好地定位錯(cuò)誤并節(jié)省調(diào)試時(shí)間。
在Python 3.10中,兩個(gè)新特性使得我們可以更好地處理錯(cuò)誤,他們是更清楚地錯(cuò)誤消息以及精確的行號(hào)。比如,我們有以下代碼,包含一個(gè)字典和一個(gè)函數(shù)。但是我們忘記了字典結(jié)束的花括號(hào)“}”。
some_dict = {1: "jack", 2: "john", 3: "james" , a_results = a_useful_function()
在之前的Python版本中,錯(cuò)誤信息如下:
File "amazing_code.py",
line 3 a_results = a_useful_function()
^ SyntaxError: invalid syntax # 無(wú)效的語(yǔ)法
但是,隨著新的錯(cuò)誤消息和行號(hào)的改進(jìn),新的錯(cuò)誤消息將包含更好的信息,例如準(zhǔn)確的錯(cuò)誤類型和精確的行號(hào)。
File "amazing_code.py", line 1 expected = {1: "jack", 2: "john", 3: "james" , ^ SyntaxError: '{' was never closed # 未關(guān)閉的 “ { ”
這一新特性將有助于加快調(diào)試速度,并減少人們開(kāi)始學(xué)習(xí) Python 的挫敗感。
結(jié)構(gòu)化模式匹配
如果您使用過(guò) C++ 等其他編程語(yǔ)言,您可能希望 Python 有 switch 語(yǔ)句,這樣您就不必經(jīng)歷冗長(zhǎng)的 if、elif、elif、…、else 語(yǔ)句。好吧,Python 3.10 的新特性之一是添加了結(jié)構(gòu)化模式匹配,或者換句話說(shuō),具有以下語(yǔ)法的 switch、case 語(yǔ)句。
match subject: case <patt1>: <act1> case <patt2>: <act2> case <patt3>: <act3> case _: <action_default>
新的類型聯(lián)合運(yùn)算符
盡管 Python 是一種動(dòng)態(tài)類型的編程語(yǔ)言,但還是有一些方法可以使它的某些部分成為靜態(tài)類型的。比如,你正在寫(xiě)一個(gè)函數(shù),而屬性的類型對(duì)于函數(shù)的內(nèi)部通信很重要。在之前的版本中,你可以指定類型如下:
def func(num: int) -> int: return num + 5
但是,如果你要接受兩種類型,你就需要使用Union關(guān)鍵字。
def func(num: Union[int, float]) -> Union[int, float]: return num + 5
在新版Python中,你可以用“|”運(yùn)算符替代Union關(guān)鍵字,這樣會(huì)更直接。
def func(num: int | float) -> int | float: return num + 5
其他很酷的特性
4.1 更嚴(yán)格的zip
Python的樂(lè)趣之一就是zip()函數(shù)。它是一個(gè)內(nèi)置函數(shù),允許你同時(shí)遍歷多個(gè)序列,并組合其返回值。在之前的版本中,你可以對(duì)不同長(zhǎng)度的序列使用zip。但是,現(xiàn)在有了一個(gè)新的參數(shù),strict,用來(lái)檢查可遍歷對(duì)象是否長(zhǎng)度一致。
4.2 自動(dòng)文本編碼
作為程序員,我們會(huì)說(shuō),“他在我的電腦上能運(yùn)行的”。代碼在一臺(tái)機(jī)器上運(yùn)行而不在另一臺(tái)機(jī)器上運(yùn)行的原因有很多;文本編碼可能會(huì)導(dǎo)致此類錯(cuò)誤。
在以前的 Python 版本中,如果沒(méi)有明確說(shuō)明編碼類型,首選的本地編碼可能會(huì)導(dǎo)致代碼在其他機(jī)器上失敗。在 Python 3.10 中,可以激活警告以通知用戶打開(kāi)文本文件沒(méi)有指定編碼類型。
4.3 異步迭代
異步編程是一個(gè)強(qiáng)大而先進(jìn)的編程范式,它從 3.5 版開(kāi)始就成為 Python 的一部分。在Python 3.10,有兩個(gè)新的異步的內(nèi)置功能aiter()和anext()使你的代碼更易讀。
最后的想法
當(dāng)我攻讀本科學(xué)位時(shí),我參加了幾門(mén)使用 C++ 或 Java 編寫(xiě)代碼和實(shí)現(xiàn)應(yīng)用程序的課程。但是,當(dāng)我要寫(xiě)畢業(yè)論文時(shí),我決定學(xué)習(xí)和使用 Python。那是差不多十年前的事了,我再也沒(méi)有回頭;每當(dāng)我解決問(wèn)題時(shí),Python就成了我首選的編程語(yǔ)言。
后來(lái),我開(kāi)始教授兒童計(jì)算機(jī)科學(xué)。我意識(shí)到 Python 正激勵(lì)年輕一代從事技術(shù)職業(yè)。除了容易讀寫(xiě),容易上手,我最喜歡Python的一點(diǎn)是Python軟件基金會(huì)的努力工作,保持Python與時(shí)俱進(jìn)。
Python的每個(gè)版本,都帶來(lái)了不起的新特性。這些特性是大部分Python程序員需要的,能讓我們高效寫(xiě)Python代碼。總之,它們讓人們寫(xiě)代碼更容易。本文中,我分享了讓我和我的學(xué)生興奮的Python 3.10的六個(gè)新特性。
參考鏈接
https://towardsdatascience.com/6-new-awesome-features-in-python-3-10-a0598e87689f
https://docs.python.org/3/whatsnew/3.10.html
https://docs.python.org/zh-cn/3/whatsnew/3.10.html
到此這篇關(guān)于Python 3.10 中的 6 個(gè)新特性,你體驗(yàn)了嗎?的文章就介紹到這了,更多相關(guān)Python 3.10新特性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python解壓可迭代對(duì)象賦值給多個(gè)變量詳解
這篇文章主要為大家介紹了Python賦值多個(gè)變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12python神經(jīng)網(wǎng)絡(luò)MobileNetV3?small模型的復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)MobileNetV3?small模型的復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05用python結(jié)合jieba和wordcloud實(shí)現(xiàn)詞云效果
詞云,顧名思義就是很多個(gè)單詞,然后通過(guò)出現(xiàn)的頻率或者比重之類的標(biāo)準(zhǔn)匯聚成一個(gè)云朵的樣子嘛,其實(shí)呢現(xiàn)在網(wǎng)上已經(jīng)有很多能自動(dòng)生成詞云的工具了,比如Wordle,Tagxedo等等,Python也能實(shí)現(xiàn)這樣的效果,我們通過(guò)jieba庫(kù)和wordcloud庫(kù)也能十分輕松的完成詞云的構(gòu)建2017-09-09如何以Winsows Service方式運(yùn)行JupyterLab
這篇文章主要介紹了如何以Winsows Service方式運(yùn)行JupyterLab的教程2020-08-08基于PyQt5實(shí)現(xiàn)一個(gè)串口接數(shù)據(jù)波形顯示工具
這篇文章主要為大家詳細(xì)介紹了如何利用PyQt5實(shí)現(xiàn)一個(gè)串口接數(shù)據(jù)波形顯示工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-01-01使用Python3中的gettext模塊翻譯Python源碼以支持多語(yǔ)言
這篇文章主要介紹了使用Python3中的gettext模塊翻譯Python源碼以支持多語(yǔ)言,其中翻譯Python源碼只是作為示例以展示gettext的功能和用法,需要的朋友可以參考下2015-03-03python之pyqt5通過(guò)按鈕改變Label的背景顏色方法
今天小編就為大家分享一篇python之pyqt5通過(guò)按鈕改變Label的背景顏色方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python?pyecharts?數(shù)據(jù)可視化模塊的配置方法
Echarts 是一個(gè)由百度開(kāi)源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開(kāi)發(fā)者的認(rèn)可,這篇文章主要介紹了Python?pyecharts?數(shù)據(jù)可視化模塊,需要的朋友可以參考下2022-09-09