|
目录专栏列表前言基本语法match语句case语句模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配模式匹配的优势总结专栏列表Python教程(一):环境搭建及PyCharm安装Python教程(二):语法与数据结构Python教程(三):字符串特性大全Python教程(四):Python运算符合集Python教程(五):理解条件语句和循环结构Python教程(六):函数式编程Python教程(七):match…case模式匹配正文开始,如果觉得文章对您有帮助,请帮我三连+订阅,谢谢💖💖💖前言在Python中,match和case是一种新的语法结构,首次出现在Python3.10中。这种结构提供了一种类似于其他编程语言中switch或case的功能,允许基于不同条件执行不同的代码块。基本语法match语句match语句是Python中的模式匹配语句,它允许你将一个值与多个模式进行匹配,并根据匹配结果执行相应的代码块。matchvalue:casepattern1:code_block1casepattern2:code_block2...case_:default_code_block12345678case语句case语句是match语句的一部分,用于定义一个或多个模式,当match语句中的值与这些模式匹配时,将执行相应的代码块。模式匹配的类型具体值匹配:匹配一个具体的值。类型匹配:匹配一个特定的数据类型。序列匹配:匹配一个序列,例如列表或元组。星号表达式:匹配序列中的部分元素。命名变量:在模式中使用变量名,将匹配的值赋给这些变量。复杂匹配:可以匹配多个值、匹配一定范围,并且把匹配后的值绑定到变量示例具体值匹配某个学生的成绩只能是A、B、C,用if语句编写如下:score='B'ifscore=='A':print('scoreisA.')elifscore=='B':print('scoreisB.')elifscore=='C':print('scoreisC.')else:print('invalidscore.')123456789用match进行改写score='B'matchscore:case'A':print('scoreisA.')case'B':print('scoreisB.')case'C':print('scoreisC.')case_:#_表示匹配到其他任何情况print('scoreis???.')1234567891011类型匹配defmatch_type(value):matchvalue:caseint():print("这是一个整数")casefloat():print("这是一个浮点数")casestr():print("这是一个字符串")case_:print("未知类型")match_type(10)#输出:这是一个整数match_type(3.14)#输出:这是一个浮点数match_type("hello")#输出:这是一个字符串match_type([1,2,3])#输出:未知类型123456789101112131415序列匹配defmatch_sequence(value):matchvalue:case[1,2,3]:print("匹配到[1,2,3]")case(1,num):print("匹配到元组,第一个元素为1",'第二个数',num)case[1,*rest]:print(f"匹配到以1开头的列表,其余元素为{rest}")case_:print("匹配到其他值")match_sequence([1,2,3])#输出:匹配到[1,2,3]match_sequence([1,4,5])#输出:匹配到以1开头的列表,其余元素为[4,5]match_sequence((1,2))#输出:匹配到元组,第一个元素为1第二个数2match_sequence("hello")#输出:匹配到其他值123456789101112131415星号表达式defmatch_sequence(value):matchvalue:case[1,*rest]:print(f"匹配到以1开头的列表,其余元素为{rest}")case_:print("匹配到其他值")match_sequence([1,2,3])#输出:匹配到以1开头的列表,其余元素为[2,3]match_sequence([1,4,5])#输出:匹配到以1开头的列表,其余元素为[4,5]123456789命名变量defmatch_named(value):matchvalue:case(a,b):print(f"匹配到元组,第一个元素为{a},第二个元素为{b}")case{"name":name,"age":age}:print(f"匹配到字典,名字为{name},年龄为{age}")case_:print("匹配到其他值")match_named((1,2))#输出:匹配到元组,第一个元素为1,第二个元素为2match_named({"name":"Alice","age":30})#输出:匹配到字典,名字为Alice,年龄为30match_named([1,2,3])#输出:匹配到其他值123456789101112复杂匹配age=15matchage:casexifx
|
|