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} 岁")
结构化模式匹配的优势:
- 可读性:减少了多重
if-elif-else
的复杂度。 - 模式强大:支持解包、类型匹配、守卫条件等。
- 灵活性:可匹配数据结构如列表、字典、类实例等。
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18585340