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

Python typing语法中Optional[Union]与含None的Union写法选用约定咨询

Python类型标注两种等价写法的选用规范

首先可以确认:Optional[Union[A, B]] 和 Union[A, B, None] 语义完全等价,所有类型检查工具对二者的处理逻辑没有任何区别。

相关的明确约定来自PEP 484规范:

PEP 484 中明确定义:Optional[X] 是 Union[X, None] 的等效语法糖。当 X 本身为联合类型时,该等价关系自然成立,因此 Optional[Union[A, B]] 可直接展开为 Union[A, B, None]。

关于二者的选用,社区目前有统一的不成文约定:

  • 如果想优先强调「该值可能为空」的属性,优先选择 Optional[Union[A, B]] 写法,读者可以第一时间感知到None是该类型的可选附加属性
  • 如果想表达「该值的可选范围是A、B、None三类平级情况」,优先选择 Union[A, B, None] 写法,三种类型的优先级在写法上完全平等,逻辑更直观
  • Python 3.10及以上版本中,更推荐使用管道运算符简化为 A | B | None,该写法兼顾了两种表述的优势,是目前社区主推的通用写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:54:03