python match用法

Python 3.10 引入了一个重要的新特性:结构化模式匹配(Structural Pattern Matching),主要通过 match 语句实现。它类似于其他编程语言(如 C、JavaScript、Go)中的 switch-case 语句,但功能更强大,支持更复杂的模式匹配。

基本语法:

match 变量:
    case 模式1:
        # 匹配模式1时执行的代码
    case 模式2:
        # 匹配模式2时执行的代码
    case _:
        # 默认分支,相当于 switch-case 中的 "default"

使用示例:

1. 简单值匹配:

def http_status(code):
    match code:
        case 200:
            return "OK"
        case 400:
            return "Bad Request"
        case 404:
            return "Not Found"
        case _:
            return "Unknown Status"

print(http_status(200))  # 输出: OK

2. 匹配多种模式:

number = 5
match number:
    case 1 | 3 | 5 | 7 | 9:
        print("奇数")
    case 2 | 4 | 6 | 8 | 10:
        print("偶数")
    case _:
        print("其他")

3. 解包元组或列表:

point = (1, 2)
match point:
    case (0, 0):
        print("原点")
    case (0, y):
        print(f"在Y轴上,Y坐标为 {y}")
    case (x, 0):
        print(f"在X轴上,X坐标为 {x}")
    case (x, y):
        print(f"坐标为 ({x}, {y})")

4. 使用通配符 _

通配符 _ 可以匹配任何值,常用于默认情况或忽略某些值。

data = ("John", 30)
match data:
    case (name, age):
        print(f"Name: {name}, Age: {age}")
    case _:
        print("Unknown data format")

5. 类和对象匹配:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 25)

match person:
    case Person(name="Alice", age=25):
        print("匹配到 Alice,25 岁")
    case Person(name=name, age=age):
        print(f"匹配到 {name}, {age} 岁")

结构化模式匹配的优势:

  1. 可读性:减少了多重 if-elif-else 的复杂度。
  2. 模式强大:支持解包、类型匹配、守卫条件等。
  3. 灵活性:可匹配数据结构如列表、字典、类实例等。
posted @ 2024-12-04 01:08  __username  阅读(10)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。