插件窝 干货文章 Python3.10 match-case语句如何高效匹配多个变量的值?

Python3.10 match-case语句如何高效匹配多个变量的值?

匹配 match case 模式 697    来源:    2025-03-13

在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)  # 输出: 未匹配到任何模式

解释

  1. 元组匹配match (x, y, z)x, y, z 组合成一个元组,然后在 case 语句中进行匹配。
  2. 通配符_ 是一个通配符,表示匹配任意值。
  3. 模式匹配case (1, 2, 3) 表示当 x 为 1,y 为 2,z 为 3 时匹配成功。
  4. 默认情况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语句支持复杂的模式匹配,包括嵌套结构。

通过这种方式,你可以高效地匹配多个变量的值,并根据不同的模式执行相应的逻辑。