六星源課堂:Python 3.10中的這5個(gè)新特性,非常值得體驗(yàn)!
Python 在市場(chǎng)上已經(jīng)有一段時(shí)間了,Python 的最新版本 3.10 有一些重大改進(jìn),六星源課堂將在此處列出這些更新。六星源課堂在列舉了這個(gè)新版本 的前 5 個(gè)更新。

一、錯(cuò)誤信息的改進(jìn)
對(duì)于 Python 開(kāi)發(fā)人員,當(dāng)您編寫(xiě)代碼并遇到錯(cuò)誤時(shí),錯(cuò)誤消息可幫助您找出代碼中的錯(cuò)誤。與使用以前的 Python 版本時(shí)相比,改進(jìn)的錯(cuò)誤消息使您的生活更加輕松。例如,考慮以下代碼,其中第二行末尾沒(méi)有括號(hào):

在以前的版本中——Python3.9 及更早的版本,你會(huì)看到如下錯(cuò)誤——

嗯,無(wú)效的語(yǔ)法!現(xiàn)在,作為開(kāi)發(fā)人員,您從這條錯(cuò)誤消息中了解到什么?好吧,就我個(gè)人而言,除了在第 3 行的某處添加了錯(cuò)誤的語(yǔ)法這一事實(shí)之外,我什么都不明白。
但是,錯(cuò)誤真的出現(xiàn)在第 3 行嗎?Python 3.10 是這種情況下的救星,具有最新的更新。對(duì)于同一段代碼,Python 3.10 會(huì)拋出以下錯(cuò)誤信息——

行號(hào)和非常具體的錯(cuò)誤消息將允許您直接進(jìn)入、修復(fù)錯(cuò)誤并繼續(xù)編碼!我個(gè)人嘗試查看錯(cuò)誤消息是否足夠清晰的另一個(gè)示例——

這真的是 Python 3.10 版本中的一個(gè)很酷的更新,請(qǐng)?jiān)诒疚牡脑u(píng)論部分分享您對(duì)此的看法。
二、更簡(jiǎn)單的類(lèi)型聯(lián)合語(yǔ)法
在過(guò)去的 Python 版本中,更多的工具已從類(lèi)型轉(zhuǎn)換為內(nèi)置功能,以避免每次都導(dǎo)入靜態(tài)類(lèi)型。現(xiàn)在看看這次的改動(dòng)——

在 Python 3.10 中,現(xiàn)在允許您使用管道運(yùn)算符 (|) 來(lái)指定類(lèi)型聯(lián)合,而不是從輸入模塊中導(dǎo)入聯(lián)合。此外,現(xiàn)有的typing.Union 和| 語(yǔ)法應(yīng)該是等效的,如下比較——

三、在多行中使用多個(gè)`with`語(yǔ)句
Python 確實(shí)通過(guò)使用反斜杠 (\) 支持多行語(yǔ)句,但是 Python 中的某些結(jié)構(gòu)不需要使用斜杠來(lái)編寫(xiě)多行語(yǔ)句。其中之一是具有多行 with() 語(yǔ)句的上下文管理器。例如——

是的,這似乎不是一個(gè)功能,但它是對(duì)先前版本的重大改進(jìn),因?yàn)槟赡苡龅竭^(guò)使用多行上下文管理器的用例,但由于上述錯(cuò)誤而無(wú)法執(zhí)行。如果你仍然感到困惑,讓我們舉更多例子來(lái)說(shuō)明你可以使用 Python 3.10 版本的上下文管理器做什么——

您現(xiàn)在可以擁有多行上下文管理器語(yǔ)句,而無(wú)需使用反斜杠。很棒吧?
四、更好的類(lèi)型別名
類(lèi)型別名允許您快速定義可以為復(fù)雜類(lèi)型聲明創(chuàng)建的新別名。例如——

這通常可以正常工作。然而,類(lèi)型檢查器通常不可能知道這樣的語(yǔ)句是類(lèi)型別名還是只是常規(guī)全局變量的定義。

上面的 python 代碼為 tuple[str, str] 聲明了一個(gè)別名 UserInfo,因?yàn)樗且环N組合了多種類(lèi)型值的數(shù)據(jù)類(lèi)型。在我們的例子中,它是一個(gè)字符串和一個(gè)整數(shù)。此外,添加 TypeAlias 注釋可以向類(lèi)型檢查器和任何閱讀您代碼的人闡明意圖。
五、更嚴(yán)格的序列壓縮
zip() 是 Python 中的一個(gè)內(nèi)置函數(shù),您可能在組合多個(gè)列表/序列時(shí)使用過(guò)它。Python3.10 引入了新的嚴(yán)格參數(shù),它添加了一個(gè)運(yùn)行時(shí)測(cè)試來(lái)檢查所有被壓縮的序列是否具有相同的長(zhǎng)度。例如——

zip() 可用于并行迭代這三個(gè)列表:

讓我們?cè)俅问褂蒙厦骘@示的這兩個(gè)序列的名稱(chēng)和編號(hào)。 現(xiàn)在唯一的區(qū)別是,這些序列之間的數(shù)字與序列名稱(chēng)的長(zhǎng)度不同,如下所示——

注意,所有關(guān)于名字——Kevin 的信息都消失了!如果您的數(shù)據(jù)集更大,則很難發(fā)現(xiàn)此類(lèi)錯(cuò)誤。即使您發(fā)現(xiàn)有問(wèn)題,診斷和修復(fù)也并不總是那么容易。被壓縮的序列將具有相同長(zhǎng)度的假設(shè)不僅可以幫助您避免這種差異。在 Python 3.10 中,strict 參數(shù)可以幫助你在一開(kāi)始就避免這種情況——

雖然 strict 并沒(méi)有真正向 zip() 添加任何新功能,但它可以幫助您避免那些難以發(fā)現(xiàn)的錯(cuò)誤。
Python 3.10 中的其他更新 此版本有很多錯(cuò)誤修復(fù)以及其他一些小更新,如果您有興趣,可以在官方發(fā)布頁(yè)面上找到。
以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多Python技巧,歡迎持續(xù)關(guān)注六星源課堂!