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

Python 3.8+中能否创建命名联合类型?

为类型联合定义别名的方法

Python的typing模块完全支持为长类型联合定义别名,不同版本有不同的实现方式:

Python 3.10+(推荐)

从Python 3.10开始,你可以直接使用|运算符替代Union,同时可以通过类型别名来命名你的联合类型,有两种写法:

方式1:直接赋值定义别名

# 3.10+可直接用|运算符,无需导入Union
MyUnion = Foo | Bar | Fizz | Buzz | Splat | Bang | Woo | Wizz

def foo(self) -> MyUnion:
    # 函数实现
    ...

方式2:使用TypeAlias显式标注(更清晰)

如果想明确标记这是一个类型别名,避免和普通变量混淆,可以用typing.TypeAlias:

from typing import TypeAlias

MyUnion: TypeAlias = Foo | Bar | Fizz | Buzz | Splat | Bang | Woo | Wizz

def foo(self) -> MyUnion:
    ...

Python 3.9及以下

在更早的版本中,需要借助Union来定义,同样可以直接赋值作为别名:

from typing import Union

MyUnion = Union[Foo, Bar, Fizz, Buzz, Splat, Bang, Woo, Wizz]

def foo(self) -> MyUnion:
    ...

这些别名可以在任何需要使用原联合类型的地方复用,包括函数返回值、参数类型、变量注解等,类型检查工具(如mypy、pyright)都能正确识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:10:25