python3.10 match case 怎么匹配多个值同时满足?

var1 = 1
var2 = 2

match True:
    case var1==1 and var2==2: print('同时满足多个值')

怎么让上面代码正确?
python3.10 match case 怎么匹配多个值同时满足?

回复
阅读 504
1 个回答

可以这么写:

var1 = 1
var2 = 2

match (var1, var2):
    case (1, 2):
        print("同时满足多个值")

详见 4.6. match 语句 — 4. 其他流程控制工具 — Python 3.10.9 文档 中的第三个代码块:

模式的形式类似解包赋值,并可被用于绑定变量:

# point is an (x, y) tuple
match point:
    case (0, 0):
        print("Origin")
    case (0, y):
        print(f"Y={y}")
    case (x, 0):
        print(f"X={x}")
    case (x, y):
        print(f"X={x}, Y={y}")
    case _:
        raise ValueError("Not a point")

请仔细研究此代码! 第一个模式有两个字面值,可以看作是上面所示字面值模式的扩展。但接下来的两个模式结合了一个字面值和一个变量,而变量 绑定 了一个来自目标的值(point)。第四个模式捕获了两个值,这使得它在概念上类似于解包赋值 (x, y) = point。

推荐问题
宣传栏