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

多类型场景下的Optional类型标注:是否需结合Union使用?

Python类型标注:多类型+None的正确写法

首先明确:必须使用Union,写法一是错误的,无法被类型检查器(比如mypy)正确识别。

为什么写法一不行?

Python的Optional类型本质是Union[X, None]的语法糖,它仅接受单个类型参数。你写Optional[str, list]属于传了多个参数给Optional,这不符合它的定义,会直接触发语法错误或者类型检查报错。

正确的写法

有两种等价的正确写法:

  1. 用Optional包裹Union(也就是你的写法二):
def func(
    arg: Optional[Union[str, list]]
):
    pass
  1. 直接把None加入Union的类型列表:
def func(
    arg: Union[str, list, None]
):
    pass

这两种写法在类型检查逻辑上完全一致,选哪种看个人习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:01:19