python中match case函数的用法
时间: 2025-06-27 15:02:09 AIGC 浏览: 33
### Python `match` 和 `case` 语句简介
在 Python 中,`match` 和 `case` 是一种新的语法结构,首次引入于 Python 3.10 版本。这一特性提供了类似于其他编程语言中的 `switch` 或 `case` 功能,能够根据不同的条件执行相应的代码块[^1]。
#### 基础语法
以下是 `match` 和 `case` 的基本形式:
```python
match subject:
case pattern_1:
# 当 subject 符合 pattern_1 时执行的代码
pass
case pattern_2:
# 当 subject 符合 pattern_2 时执行的代码
pass
...
case _:
# 默认情况下的处理逻辑
pass
```
其中:
- **subject** 表示要匹配的目标值。
- **pattern** 表示用于匹配的具体模式。
- `_` 是通配符,表示如果没有任何模式匹配成功,则会进入此分支。
---
#### 字面量模式
字面量模式是最简单的用法之一,它可以直接匹配特定的常量值,例如整数、字符串或其他不可变的数据类型。
```python
number = 1
match number:
case 0:
print('zero')
case 1:
print('one') # 输出 'one'
case 2:
print('two')
```
上述例子展示了如何通过匹配具体的数值来决定程序的行为[^2]。
---
#### 捕捉模式
捕捉模式允许绑定变量到匹配的结果上,从而可以在后续代码中使用这些变量。
```python
point = (1, 2)
match point:
case (0, 0):
print("Origin") # 如果坐标为原点则打印 Origin
case (x, y): # 使用捕捉模式捕获 x 和 y
print(f"Point is at ({x}, {y})") # 输出 Point is at (1, 2)
```
在此例中,`(x, y)` 将自动解包并赋值给两个变量 `x` 和 `y`。
---
#### 序列匹配
对于更复杂的场景,比如列表或元组等容器序列,也可以利用其内部结构来进行匹配。
```python
sequence = [1, 2]
match sequence:
case []: # 空列表的情况
print("Empty list")
case [a]: # 单一元素的列表
print(f"Single element: {a}")
case [x, y]: # 双元素列表
print(f"Two elements: {x} and {y}") # 输出 Two elements: 1 and 2
case _: # 其他任意长度的列表
print("More than two elements")
```
这里演示了针对不同长度和内容的列表进行精确匹配的能力[^3]。
---
#### 高级应用:组合模式与守卫表达式
还可以进一步扩展功能,支持复合模式以及附加条件(即所谓的“守卫”)。这使得我们可以实现更加灵活多样的控制流设计。
```python
value = {"type": "circle", "radius": 5}
match value:
case {"type": "square", "side_length": side} if side > 0:
area = side * side
print(f"Square with positive side length has an area of {area}.")
case {"type": "circle", "radius": r}:
circumference = 2 * 3.14159 * r
print(f"Circle's radius={r}; Circumference≈{circumference:.2f}.") # 圆形半径=5;周长约等于31.42.
case _:
print("Unknown shape.")
```
在这个复杂案例里不仅考虑到了形状种类还加入了额外约束条件以确保数据有效性。
---
### 总结
以上就是关于 Python 新增加进来 match-case 结构的一些基础知识及其典型应用场景介绍。该机制极大地增强了我们编写清晰简洁分支判断逻辑的可能性,在实际开发过程中非常有用处!
阅读全文
相关推荐














