6. match 语句
注:match 语句从 python3.10 起用,之前的版本不支持。
作用
match语句是根据一个表达式的值和模式匹配来执行不同的代码块。
match 语句类似于 C 语言中的 switch 语句的功能,但有更强的表达能力和灵活性。
语法
match 目标表达式:
case 匹配模式1:
语句块1
case 匹配模式2:
语句块2
...
case 匹配模式n:
语句块n
... 代表 case 子句可以由有0个、1个或多个。
match 语句的各种匹配模式
1. 字面值模式
match语句根据一个表达式的值来自上而下依次对比各个case块中的字面值,如果表达式与字面值相等,则执行case对应的语句块。
match 语句字面值模式同C语言中的switch语句的功能完全一样。
字面值模式语法:
match 目标表达式:
case 字面值1:
语句块1
case 字面值2:
语句块2
case 字面值n:
语句块n
示例
写一个程序,输入“春”、“夏”、“秋”、“冬”四个季节中的任意一个,打印出这个季节在哪几个月。
season = input('请输入季节(春/夏/秋/冬):')
match season:
case '春':
print("春季在 1~3 月!")
case '夏':
print("夏季在 4~6 月!")
case '秋':
print("秋季在 7~9 月!")
case '冬':
print("冬季在 10~12 月!")
2. 通配符模式
"_" 是通配符,它可以匹配任何值以及任何模式。
case _ : 通常放在最后,并总会匹配成功。
通配符模式语法:
match 目标表达式:
case 字面值1:
语句块1
case 字面值2:
语句块2
case 字面值n:
语句块n
case _:
语句块other
说明
"_" 是软关键字,只用在match语句中有效。
示例
改写上面的示例,实现如下功能:
写一个程序,输入“春”、“夏”、“秋”、“冬”四个季节中的任意一个,打印出这个季节在哪几个月。如果用户输入的不是上述四个季节则提示“您的输入有误”!
season = input('请输入季节(春/夏/秋/冬):')
match season:
case '春':
print("春季在 1~3 月!")
case '夏':
print("夏季在 4~6 月!")
case '秋':
print("秋季在 7~9 月!")
case '冬':
print("冬季在 10~12 月!")
case _:
print('您的输入有误!')
与第一个示例相比,增加了一个
case _:
子句,这个_
就是通配符,能匹配所有其他值!
其他匹配模式
match 语句有 10 种匹配模式,详见官网文档。
https://docs.python.org/zh-cn/3/reference/compound_stmts.html#patterns