[忤旭]《Python 3.10.1》match……case語句簡單使用方法

大家好,我是忤旭!
Python在3.10.0版本中新增了match……case語句,它源自C語言中的switch……case語句,但具有更強大的使用方法。文中將對match……case語句的一些簡單使用方法進行探索,首先給出了全部源代碼,然后再對各個用法進行分析。

源代碼

運行結(jié)果

基本匹配用法
在函數(shù)base_usage中演示了match……else的基本匹配用法。我們可以通過設(shè)定case后面的條件來匹配輸入變量,從而達到選擇分支的效果,需要注意可以用_來表示默認分支,即在所有分支均不滿足時會進入的分支,也不需要break來跳出case。

列表匹配用法
在函數(shù)list_usage中演示了match……else的列表匹配用法。match會根據(jù)輸入列表變量的內(nèi)容來選擇分支,必須內(nèi)容一致。此外,正如函數(shù)中case ('2', 2)分支所演示的,用元組條件不妨礙列表的內(nèi)容匹配。

元組匹配用法
在函數(shù)tuple_usage中演示了match……else的元組匹配用法。match會根據(jù)輸入元組變量的內(nèi)容來選擇分支,必須內(nèi)容一致。此外,正如函數(shù)中case ['2', 2]分支所演示的,用列表條件不妨礙元組的內(nèi)容匹配。

字典匹配用法
在函數(shù)dict_usage1和dict_usage2中演示了match……else的字典匹配用法。字典匹配用法中需要注意只要case條件都出現(xiàn)在了輸入字典變量中,該case就會命中,即case條件不必和輸入字典變量的內(nèi)容完全一致,因此字典匹配用法的條件必須要完整,而不能偷懶少寫幾個。

類匹配用法
在函數(shù)class_usage1、class_usage2、和class_usage3中演示了match……else的類匹配用法。類匹配用法與字典匹配用法相似,只要類變量的類與case條件的類一致,并且類變量的類屬性中包含有case條件的類屬性,該case就會命中,即case條件的類屬性不需要與類變量的全部類屬性一致。

異常匹配用法
在函數(shù)error_usage中演示了match……else的異常匹配用法。異常匹配用法需要得到當(dāng)前正在處理的異常的類型,可以通過except Exception as error得到,也可以用sys.exc_info()得到,注意sys.exc_info()的返回值包含了異常類型,異常參數(shù)(通常為異常錯誤的信息),和用以異常跟蹤回溯的對象.。在得到異常類型后,就和基本匹配用法一樣了,只要將異常類型跟在case后就和基本匹配用法一樣了。

不定參數(shù)匹配用法
在函數(shù)arg_usage中演示了match……else的不定參數(shù)匹配用法。不定參數(shù)匹配基本用于列表匹配和字典匹配中,當(dāng)然應(yīng)該也可以用于別的數(shù)據(jù)結(jié)構(gòu),但我沒進行測試,在我們不確定包含大量內(nèi)容的數(shù)據(jù)結(jié)構(gòu)的所有內(nèi)容時,就可以使用不定參數(shù)匹配。正如源代碼中一樣,在使用不定參數(shù)匹配時,只要輸入變量中包含有case條件中的確定內(nèi)容,該case就會被命中,同時可以將匹配得到的輸入變量的其余不定值都用arg獲取到,并用于后續(xù)處理。