match 语句(3.10 新增)
https://docs.python.org/zh-cn/3/tutorial/controlflow.html#match-statements
https://docs.python.org/zh-cn/3/reference/compound_stmts.html#match
match 语句
🐍 3.10 新版功能.
- python 中的
match语句也被称作匹配语句,用于进行模式匹配。 - 模式匹配接受一个模式作为输入(跟在
case后),一个目标值(跟在match后)。 - 该模式(可能包含子模式)将与目标值进行匹配。
- 逻辑上与
if ... elif ... else类似
match 语句类似 C 语言中的 switch 语句;代码示例:
python
flag = False
def http_error(status):
match status:
case 400: # 字面值模式
print('错误请求')
case 401 | 403 | 405: # 或模式
print('不允许访问')
case 404:
print('未找到')
case 499 if flag is True: # 约束项
print('超时')
case 500 | 502 as code: # AS 模式
print(f'{code} 服务器错误')
case _: # 通配符模式,_ 总是会匹配成功
print('其它错误')
http_error(401) # 不允许访问
http_error(499) # 其它错误
http_error(500) # 500 服务器错误
http_error(504) # 其它错误字面值模式就是直接进行值比较的模式,对于单例None、True和False,会使用is运算符。或模式是由竖杠|分隔的两个或更多的模式。case中的if(约束项)必须成立才能让case语句块中的代码被执行。AS 模式将关键字as左侧的或模式与目标值进行匹配。简而言之,P as NAME将与 P 匹配,成功后将设置 NAME = {匹配到的值} 。case _中的_被作为通配符,当未匹配到其它case时执行此分支。as可以用在case _中- 如果没有
case语句匹配成功,则不会执行任何分支。
