Python3.10新特性之match語句示例詳解
正文
在Python 3.10發(fā)布之前,Python是沒有類似于其他語言中switch語句的,要實現(xiàn)類似的功能最簡單的方法就是通過if ... elif ... else ...語句,但是這樣畢竟不夠優(yōu)雅,不夠“Pythonic”
更推薦的做法是通過字典(dict)實現(xiàn)。
通過字典間接實現(xiàn) switch
想要通過字典來實現(xiàn)條件分支語句,首先我們需要定義一個字典,來表示不同case和返回值/函數(shù)之間的映射關系,然后再利用字典的特性,即可以實現(xiàn)類似于switch的功能。下面定義一個簡單的函數(shù),傳入不同的case就會打印不同的內(nèi)容,也可以將打印內(nèi)容的語句替換成你想要執(zhí)行的函數(shù):
def switch(case):
mapping = {
1: "print('case 1')",
2: "print('case 2')"
}
return eval(mapping[case])
switch(1)
運行結(jié)果:
case 1可以看到,輸出結(jié)果正是我們想要的“case 1”的結(jié)果。
在Python 3.10出現(xiàn)之前,我們更多的是通過上面這種字典映射的方式,來實現(xiàn)類似于switch語句的功能。但是伴隨著Python 3.10的發(fā)布,Python也終于迎來了自己的'switch'語句,也就是接下來我們重點介紹的match語句。
Python 3.10 新特性—— match 語句,參考資料:Python 3.10增加了比switch更強大的match表達式在運行以下代碼之前,請先確保自己的Python版本大于等于3.10。和其他語言一樣,當變量num滿足哪個case的條件時,就會執(zhí)行該條件下的對應代碼:
num = 5
match num:
case 10:
print('you lose')
case 5:
print('you win')
運行結(jié)果:
you win當默認分支#當變量a不滿足任意一個case條件時,如果我們沒有對“其他“情況進行處理,那么是不會執(zhí)行任何操作的。
下面的代碼是不會有任何輸出的,因為a不滿足任意一個條件:
num = 3
match num:
case 1:
print('num 1')
case 2:
print('num 2')
無輸出如果想要對”其他“情況進行處理,那么寫法如下:
num = 3
match num:
case 1:
print('num 1')
case 2:
print('num 2')
case default:
print('case default', default)
運行結(jié)果:
case default 3可以看到,當變量a不符合任意一個條件時,就會運行到我們的default分支,同時會把變量值賦值給default變量。注意:這里的default僅僅只是一個變量名而已,并非規(guī)定寫法,也可以使用其他變量名,例如x等。其作用就是在變量不符合任意一個分支條件時,將變量值賦值給該變量。
在case中使用元組
Python的match語句不僅支持數(shù)值類型的分支,也支持其他數(shù)據(jù)類型,例如元組(tuple)
a = (2, 4)
match a:
case (1, 2):
print('case 1')
case (2, x):
print('case 2', x)
運行結(jié)果:
case 2 4可以看到,變量a在匹配到第二個分支條件時,還把元組的第二個元素值4賦值給了變量x。在case中使用判斷語句#不僅如此,match語句還支持在分支條件中插入判斷語句:
a = (2, 2)
flag = False
match a:
case (1, 2):
print('case 1')
case (2, x) if flag:
print('case 2', x)
case default:
print('case default', default)
運行結(jié)果:
case default (2, 2)由于第二個分支條件中if flag為False,不符合條件,所以代碼進入到最后一個分支條件中。
以上就是Python3.10新特性之match語句示例詳解的詳細內(nèi)容,更多關于Python3.10特性match語句的資料請關注腳本之家其它相關文章!
相關文章
pandas 取出表中一列數(shù)據(jù)所有的值并轉(zhuǎn)換為array類型的方法
下面小編就為大家分享一篇pandas 取出表中一列數(shù)據(jù)所有的值并轉(zhuǎn)換為array類型的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
淺談pandas dataframe對除數(shù)是零的處理
這篇文章主要介紹了淺談pandas dataframe對除數(shù)是零的處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Python利用pangu模塊實現(xiàn)文本格式化小工具
其實使用pangu做文本格式標準化的業(yè)務代碼在之前就實現(xiàn)了,主要能夠?qū)⒅形奈谋疚臋n中的文字、標點符號等進行標準化。但是為了方便起來我們這里使用了Qt5將其做成了一個可以操作的頁面應用,需要的可以了解一下2022-10-10
pandas.DataFrame中提取特定類型dtype的列
本文主要介紹了pandas.DataFrame中提取特定類型dtype的列,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02

