Python 3.10發(fā)布!你應(yīng)該知道這5大新特性
Python 在市場上已經(jīng)有一段時間了,作為一名 Python 開發(fā)人員,我很高興地分享 Python 正在逐步獲得更新和每個新版本的改進。Python 的最新版本 3.10 有一些重大改進,我將在此處列出這些更新。我在列舉了這個新版本 的前 5 個更新。
一、錯誤信息的改進
對于 Python 開發(fā)人員,當(dāng)您編寫代碼并遇到錯誤時,錯誤消息可幫助您找出代碼中的錯誤。與使用以前的 Python 版本時相比,改進的錯誤消息使您的生活更加輕松。例如,考慮以下代碼,其中第二行末尾沒有括號:
在以前的版本中——Python3.9 及更早的版本,你會看到如下錯誤——
嗯,無效的語法!現(xiàn)在,作為開發(fā)人員,您從這條錯誤消息中了解到什么?好吧,就我個人而言,除了在第 3 行的某處添加了錯誤的語法這一事實之外,我什么都不明白。
但是,錯誤真的出現(xiàn)在第 3 行嗎?Python 3.10 是這種情況下的救星,具有最新的更新。對于同一段代碼,Python 3.10 會拋出以下錯誤信息——
行號和非常具體的錯誤消息將允許您直接進入、修復(fù)錯誤并繼續(xù)編碼! 我個人嘗試查看錯誤消息是否足夠清晰的另一個示例——
這真的是 Python 3.10 版本中的一個很酷的更新,請在本文的評論部分分享您對此的看法。
二、更簡單的類型聯(lián)合語法
在過去的 Python 版本中,更多的工具已從類型轉(zhuǎn)換為內(nèi)置功能,以避免每次都導(dǎo)入靜態(tài)類型。現(xiàn)在看看這次的改動——
在 Python 3.10 中,現(xiàn)在允許您使用管道運算符 (|) 來指定類型聯(lián)合,而不是從輸入模塊中導(dǎo)入聯(lián)合。此外,現(xiàn)有的typing.Union 和| 語法應(yīng)該是等效的,如下比較——
三、在多行中使用多個`with`語句
Python 確實通過使用反斜杠 (\) 支持多行語句,但是 Python 中的某些結(jié)構(gòu)不需要使用斜杠來編寫多行語句。其中之一是具有多行 with() 語句的上下文管理器。例如——
是的,這似乎不是一個功能,但它是對先前版本的重大改進,因為您可能遇到過使用多行上下文管理器的用例,但由于上述錯誤而無法執(zhí)行。如果你仍然感到困惑,讓我們舉更多例子來說明你可以使用 Python 3.10 版本的上下文管理器做什么——
您現(xiàn)在可以擁有多行上下文管理器語句,而無需使用反斜杠。很棒吧?
四、更好的類型別名
類型別名允許您快速定義可以為復(fù)雜類型聲明創(chuàng)建的新別名。例如——
這通常可以正常工作。然而,類型檢查器通常不可能知道這樣的語句是類型別名還是只是常規(guī)全局變量的定義。
上面的 python 代碼為 tuple[str, str] 聲明了一個別名 UserInfo,因為它是一種組合了多種類型值的數(shù)據(jù)類型。在我們的例子中,它是一個字符串和一個整數(shù)。此外,添加 TypeAlias 注釋可以向類型檢查器和任何閱讀您代碼的人闡明意圖。
五、更嚴格的序列壓縮
zip() 是 Python 中的一個內(nèi)置函數(shù),您可能在組合多個列表/序列時使用過它。Python3.10 引入了新的嚴格參數(shù),它添加了一個運行時測試來檢查所有被壓縮的序列是否具有相同的長度。例如——
zip() 可用于并行迭代這三個列表:
讓我們再次使用上面顯示的這兩個序列的名稱和編號。 現(xiàn)在唯一的區(qū)別是,這些序列之間的數(shù)字與序列名稱的長度不同,如下所示——
注意,所有關(guān)于名字——Kevin 的信息都消失了!如果您的數(shù)據(jù)集更大,則很難發(fā)現(xiàn)此類錯誤。即使您發(fā)現(xiàn)有問題,診斷和修復(fù)也并不總是那么容易。被壓縮的序列將具有相同長度的假設(shè)不僅可以幫助您避免這種差異。在 Python 3.10 中,strict 參數(shù)可以幫助你在一開始就避免這種情況——
雖然 strict 并沒有真正向 zip() 添加任何新功能,但它可以幫助您避免那些難以發(fā)現(xiàn)的錯誤。
Python 3.10 中的其他更新 此版本有很多錯誤修復(fù)以及其他一些小更新,如果您有興趣,可以在官方發(fā)布頁面上找到。
原文:https://varun-singh-01.medium.com/python-3-10-released-top-5-new-features-you-should-know-bf968ac99230