[忤旭]《Python 3.10.1》match……case语句简单使用方法

大家好,我是忤旭!
Python在3.10.0版本中新增了match……case语句,它源自C语言中的switch……case语句,但具有更强大的使用方法。文中将对match……case语句的一些简单使用方法进行探索,首先给出了全部源代码,然后再对各个用法进行分析。

源代码

运行结果

基本匹配用法
在函数base_usage中演示了match……else的基本匹配用法。我们可以通过设定case后面的条件来匹配输入变量,从而达到选择分支的效果,需要注意可以用_来表示默认分支,即在所有分支均不满足时会进入的分支,也不需要break来跳出case。

列表匹配用法
在函数list_usage中演示了match……else的列表匹配用法。match会根据输入列表变量的内容来选择分支,必须内容一致。此外,正如函数中case ('2', 2)分支所演示的,用元组条件不妨碍列表的内容匹配。

元组匹配用法
在函数tuple_usage中演示了match……else的元组匹配用法。match会根据输入元组变量的内容来选择分支,必须内容一致。此外,正如函数中case ['2', 2]分支所演示的,用列表条件不妨碍元组的内容匹配。

字典匹配用法
在函数dict_usage1和dict_usage2中演示了match……else的字典匹配用法。字典匹配用法中需要注意只要case条件都出现在了输入字典变量中,该case就会命中,即case条件不必和输入字典变量的内容完全一致,因此字典匹配用法的条件必须要完整,而不能偷懒少写几个。

类匹配用法
在函数class_usage1、class_usage2、和class_usage3中演示了match……else的类匹配用法。类匹配用法与字典匹配用法相似,只要类变量的类与case条件的类一致,并且类变量的类属性中包含有case条件的类属性,该case就会命中,即case条件的类属性不需要与类变量的全部类属性一致。

异常匹配用法
在函数error_usage中演示了match……else的异常匹配用法。异常匹配用法需要得到当前正在处理的异常的类型,可以通过except Exception as error得到,也可以用sys.exc_info()得到,注意sys.exc_info()的返回值包含了异常类型,异常参数(通常为异常错误的信息),和用以异常跟踪回溯的对象.。在得到异常类型后,就和基本匹配用法一样了,只要将异常类型跟在case后就和基本匹配用法一样了。

不定参数匹配用法
在函数arg_usage中演示了match……else的不定参数匹配用法。不定参数匹配基本用于列表匹配和字典匹配中,当然应该也可以用于别的数据结构,但我没进行测试,在我们不确定包含大量内容的数据结构的所有内容时,就可以使用不定参数匹配。正如源代码中一样,在使用不定参数匹配时,只要输入变量中包含有case条件中的确定内容,该case就会被命中,同时可以将匹配得到的输入变量的其余不定值都用arg获取到,并用于后续处理。