Python 3.10 來(lái)了,居然有這新特性!
大家好,我是一行
已經(jīng)達(dá)到了而立之年的Python,最近發(fā)布了3.10版本
新版本添加了很多新的特性,其中最大的特性就莫過(guò)于還是安裝新版本之后有些python包不支持還得回到原來(lái)版本??
不過(guò)話說(shuō)回來(lái),除了部分包不兼容以外,還是有很多好用的性能提升
其中最有幫助的就是就是報(bào)錯(cuò)更加智能化了
例如語(yǔ)法錯(cuò)誤,很多年前作為小白的我遇到這個(gè)語(yǔ)法錯(cuò)誤問(wèn)題還跑過(guò)去問(wèn)老師
畢竟百度搜索語(yǔ)法錯(cuò)誤該怎么辦,它回答不上來(lái),最后老師給我指出來(lái)原因是少一個(gè)加一個(gè)括號(hào),頓時(shí)無(wú)比尷尬
后來(lái)python性能優(yōu)化給出了錯(cuò)誤的位置在哪,但是有些程序即使給出了還是很難找出原因,所以這次升級(jí),python就怕你不會(huì)改,將錯(cuò)誤的原因也給標(biāo)了出來(lái)
1錯(cuò)誤提示
目前python里出現(xiàn)頻率最高的錯(cuò)誤有以下幾種:
':'缺少:SyntaxError: expected ':'
','缺少:SyntaxError: invalid syntax. Perhaps you forgot a comma?
字典缺失值:SyntaxError: ':' expected after dictionary key
try沒(méi)有塊except或finally塊:
SyntaxError: expected 'except' or 'finally' block
在比較中使用=代替==:
SyntaxError: cannot assign to attribute here. Maybe you meant '==' instead of '='?
這些日常常見(jiàn)的粗心錯(cuò)誤,python直接給你提示并解釋出來(lái)了,就差動(dòng)手幫你改了
當(dāng)然除此之外還有縮進(jìn)錯(cuò)誤、屬性錯(cuò)誤、名稱(chēng)錯(cuò)誤都會(huì)有詳細(xì)的提示,讓你寫(xiě)的bug能夠更加流暢
這個(gè)特性對(duì)于初學(xué)者來(lái)說(shuō)還是非常nice的
2python
還有一個(gè)比較矚目的新特性是添加了一個(gè)新的關(guān)鍵字:match
不像其他編程語(yǔ)言有switch,python之前一直沒(méi)有,現(xiàn)在給加上了這個(gè)特性,而且還用match語(yǔ)句來(lái)代替它
match的通用語(yǔ)法如下,case從上到下將目標(biāo)與語(yǔ)句中的每個(gè)模式進(jìn)行比較,直到確認(rèn)匹配為止
如果未確認(rèn)完全匹配,則最后一種情況,通配符_(如果提供)將用作匹配情況。如果未確認(rèn)完全匹配且不存在通配符大小寫(xiě),則整個(gè)匹配塊為空操作。
match?subject:
????case?:
????????
????case?:
????????
????case?:
????????
????case?_:
????????
不像有些語(yǔ)言的switch只能匹配一種數(shù)據(jù)類(lèi)型
而python3.10里的match作為super版的switch可以匹配文字、變量、類(lèi)對(duì)象、位置參數(shù),甚至還有嵌套模式、復(fù)雜模式和Guard
Guard就暫且翻譯成守衛(wèi),就是在case后面可以加入一個(gè)if判斷
如果守衛(wèi)為假,match則繼續(xù)嘗試下一個(gè)案例塊。請(qǐng)注意,值捕獲發(fā)生在評(píng)估守衛(wèi)之前:
match?point:
????case?Point(x,?y)?if?x?==?y:
????????print(f"The?point?is?located?on?the?diagonal?Y=X?at?{x}.")
????case?Point(x,?y):
????????print(f"Point?is?not?on?the?diagonal.")
就是因?yàn)檫@樣的新特性便出現(xiàn)了下面這樣的神仙語(yǔ)句

如果不知道“軟關(guān)鍵字”這個(gè),肯定會(huì)提出疑問(wèn),關(guān)鍵字怎么能做變量呢?
這讓我想起一個(gè)段子:
小明送給領(lǐng)導(dǎo)兩個(gè)紅包.
領(lǐng)導(dǎo):你這是什么意思 小明:意思意思 領(lǐng)導(dǎo):“你這就不夠意思了.” 小明:“小意思,小意思.” 領(lǐng)導(dǎo):“你這人真有意思.” 小明:“其實(shí)也沒(méi)有別的意思.” 領(lǐng)導(dǎo):“那我就不好意思了.” 小明:“是我不好意思.”
要求:分別解釋每個(gè)“意思”的意思.
這里的意思就相當(dāng)于python3.9推出的“軟關(guān)鍵字”特性,不同的位置具有不同的意思,python也是通過(guò)不同位置來(lái)判斷代碼的具體意思
這已經(jīng)非常的人性化了,就差跟我意思意思了~
3最后
那要不要升級(jí)最新版python呢?
一行的建議還是跟著你常用的包來(lái)確定,常用包支持python3.10就去升級(jí),不支持就等等,也不差這一段時(shí)間
當(dāng)然,python3.10還有很多非常有意思的更新內(nèi)容,詳細(xì)可以官網(wǎng)鏈接進(jìn)行查看:
https://docs.python.org/3/whatsnew/3.10.html
我是一行,技術(shù)永不眠,我們下期見(jiàn)~

對(duì)了,一行用爬蟲(chóng)爬取了知乎里150000字的python學(xué)習(xí)攻略,并統(tǒng)計(jì)分析了這些年入百萬(wàn)的python大佬所推薦的Python書(shū)單,花了很長(zhǎng)時(shí)間整理成電子書(shū)合集如下圖所示,需要的可以添加一行微信好友「yihangpy」直接領(lǐng)取哦~

