You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python结构模式匹配:已定义变量绑定与实例属性字面量行为是否有文档说明?

Python结构模式匹配的变量绑定与字面量匹配差异

PEP 636 - 结构模式匹配介绍了模式匹配如何为即时声明的变量绑定值:

match command.split():
    case ["quit"]:
        print("Goodbye!")
        quit_game()
    case ["look"]:
        current_room.describe()
    case ["get", obj]:
        character.get(obj, current_room)

类似["get", obj]的模式仅匹配首元素为"get"的二元序列,同时会将obj = subject[1]进行绑定。

若obj已有值,我们可能预期它会被当作字面量使用,但实际并非如此,obj会被覆盖:

>>> # 我使用的是Python 3.12,可直接复制到iPython中运行
>>> obj = 3
>>> for i in range(5):
...     match i:
...         case obj:
...             print(i)  # 只会打印3吗?
0
1
2
3
4
>>> obj
4

但指定实例属性时不会出现这种情况:

>>> from dataclasses import dataclass
>>> @dataclass
... class Num:
...     x: int
...
>>> num = Num(x=3)
>>> for i in range(5):
...     match i:
...         case num.x:  # 会将num.x绑定到i吗???
...             print(i)
...
3

在第二个案例中,num.x保持不变,被当作字面量使用。

我未在PEP 636中找到相关说明,请问该特性细节可在哪里查阅?此行为是否在PEP 636实现后引入?

注:我认为该行为合理且实用,仅想了解其是否有文档说明及文档位置

内容的提问来源于stack exchange,提问作者LondonRob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:30:01