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

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

match 匹配 case zero 263    来源:    2025-03-13

在Python 3.10中引入了match-case语句,它提供了一种结构化的模式匹配方式,类似于其他语言中的switch-case语句,但功能更强大。要高效匹配多个变量值,可以使用match-case语句中的模式匹配功能。

基本用法

match-case语句的基本结构如下:

match value:
    case pattern1:
        # 处理pattern1的情况
    case pattern2:
        # 处理pattern2的情况
    case _:
        # 默认情况

匹配多个变量值

如果你需要同时匹配多个变量值,可以使用元组(tuple)或列表(list)来组合这些值,并在case语句中进行匹配。

示例1:匹配元组

def match_multiple_values(x, y):
    match (x, y):
        case (0, 0):
            print("Both x and y are zero")
        case (0, _):
            print("x is zero, y is non-zero")
        case (_, 0):
            print("y is zero, x is non-zero")
        case _:
            print("Both x and y are non-zero")

match_multiple_values(0, 0)  # 输出: Both x and y are zero
match_multiple_values(0, 5)  # 输出: x is zero, y is non-zero
match_multiple_values(5, 0)  # 输出: y is zero, x is non-zero
match_multiple_values(5, 5)  # 输出: Both x and y are non-zero

示例2:匹配列表

def match_list(values):
    match values:
        case [0, 0]:
            print("Both elements are zero")
        case [0, _]:
            print("First element is zero, second is non-zero")
        case [_, 0]:
            print("Second element is zero, first is non-zero")
        case _:
            print("Both elements are non-zero")

match_list([0, 0])  # 输出: Both elements are zero
match_list([0, 5])  # 输出: First element is zero, second is non-zero
match_list([5, 0])  # 输出: Second element is zero, first is non-zero
match_list([5, 5])  # 输出: Both elements are non-zero

匹配复杂结构

match-case语句还可以匹配更复杂的结构,比如嵌套的元组、列表、字典等。

示例3:匹配嵌套结构

def match_nested_structure(data):
    match data:
        case {"name": name, "age": age, "address": {"city": city}}:
            print(f"Name: {name}, Age: {age}, City: {city}")
        case {"name": name, "age": age}:
            print(f"Name: {name}, Age: {age}")
        case _:
            print("Unknown data structure")

match_nested_structure({"name": "Alice", "age": 30, "address": {"city": "New York"}})
# 输出: Name: Alice, Age: 30, City: New York

match_nested_structure({"name": "Bob", "age": 25})
# 输出: Name: Bob, Age: 25

match_nested_structure({"name": "Charlie"})
# 输出: Unknown data structure

总结

  • 使用match-case语句可以高效地匹配多个变量值。
  • 通过将多个变量组合成元组或列表,可以在case语句中进行模式匹配。
  • match-case语句支持复杂的嵌套结构匹配,使得代码更加简洁和易读。

通过合理使用match-case语句,可以显著提高代码的可读性和维护性。