Skip to content

Python 的模式匹配

!class: warning 使用模式匹配需要 Python 版本 $\geq$ 3.10,参考 PEP 634

模式匹配(Pattern Matching)是一种检查变量是否符合某种模式的语法结构,通过 matchcase 进行控制

python
# 按照先后顺序检查模式,只执行第一个匹配的模式下的代码块。
match 变量:
    case 模式1:
        代码块1
    case 模式2:
        代码块2
    ...
    case 模式n:
        代码块n

!class:info 参考:Python 官方文档

精确匹配

模式为精确值,变量与模式相等时匹配。例如:

python
value:int = int(input("好评请按1,差评请按2,投诉请按3:"))
match value:
    case 1:
        print("好评")
    case 2:
        print("差评")
    case 3:
        print("投诉")
    case _:                 # 无匹配模式匹配
        print("无效输入")

case _:通配符模式,可以匹配任何内容,通常写在最后面,作为其它所有模式都不匹配时的默认操作。

类型匹配

模式为类型,变量符合该类型时匹配。例如:

python
value:str = "233"
match value:
    case int(x):                        # 匹配成功时,value 会赋值给 x
        print("类型为整数,值为", x)
    case str(x):
        print("类型为字符串,值为", x)

匹配模式匹配

模式为匹配模式表达式,变量满足表达式时匹配。例如:

python
age:int = int(input("请输入你的年龄:"))
match age:
    case x if x < 3:        # 匹配成功时,age 会赋值给 x
        print(x, "岁婴儿")
    case x if x < 18:
        print(x, "岁少年")
    case x if x < 44:
        print(x, "岁青年")
    case x if x < 59:
        print(x, "岁中年")
    case x:                 # 无匹配模式匹配
        print(x, "岁老年")

!class: info 还有多种模式,将在后面的内容中学习。