在Python 3.10中引入了match-case
语句,类似于其他语言中的switch-case
语句,但功能更强大。match-case
语句可以用于模式匹配,能够高效地匹配多个变量的值。
match expression:
case pattern1:
# 处理 pattern1 的情况
case pattern2:
# 处理 pattern2 的情况
...
case _:
# 默认情况
如果你需要同时匹配多个变量的值,可以使用元组(tuple)来组合这些变量,并在case
语句中进行匹配。
def match_multiple_variables(x, y, z):
match (x, y, z):
case (1, 2, 3):
print("匹配到 (1, 2, 3)")
case (4, 5, 6):
print("匹配到 (4, 5, 6)")
case (_, 7, _):
print("匹配到 (_, 7, _)")
case _:
print("未匹配到任何模式")
# 测试
match_multiple_variables(1, 2, 3) # 输出: 匹配到 (1, 2, 3)
match_multiple_variables(4, 5, 6) # 输出: 匹配到 (4, 5, 6)
match_multiple_variables(10, 7, 20) # 输出: 匹配到 (_, 7, _)
match_multiple_variables(0, 0, 0) # 输出: 未匹配到任何模式
match (x, y, z)
将 x
, y
, z
组合成一个元组,然后在 case
语句中进行匹配。_
是一个通配符,表示匹配任意值。case (1, 2, 3)
表示当 x
为 1,y
为 2,z
为 3 时匹配成功。case _
是默认情况,当没有任何模式匹配时执行。你还可以在模式匹配中使用更复杂的结构,比如嵌套的元组、列表、字典等。
def match_complex_pattern(data):
match data:
case {"name": name, "age": age, "address": {"city": city}}:
print(f"匹配到: 姓名={name}, 年龄={age}, 城市={city}")
case [1, 2, 3]:
print("匹配到列表 [1, 2, 3]")
case _:
print("未匹配到任何模式")
# 测试
match_complex_pattern({"name": "Alice", "age": 30, "address": {"city": "New York"}})
# 输出: 匹配到: 姓名=Alice, 年龄=30, 城市=New York
match_complex_pattern([1, 2, 3])
# 输出: 匹配到列表 [1, 2, 3]
match_complex_pattern({"name": "Bob"})
# 输出: 未匹配到任何模式
match-case
语句中进行匹配。_
来匹配任意值。match-case
语句支持复杂的模式匹配,包括嵌套结构。通过这种方式,你可以高效地匹配多个变量的值,并根据不同的模式执行相应的逻辑。