Python 3.9及以上版本Union类型提示是否需导入?有无新规范?
Python 3.9+ 多类型联合的类型提示规范
明确说结论:Python 3.10及以上版本,不需要导入Union,直接用竖线|就能表示类型联合,这是PEP 604引入的简化语法。
不同版本写法对比
- 3.8及更早版本(必须导入
Union和List):
from typing import List, Union some_stuff: List[Union[int, str, float, List[str]]] = [98, "Fido", -34.925, ["Phantom", "Tollbooth"]]
- 3.9-3.10版本(集合类型可用原生写法,但联合类型仍需
Union):
from typing import Union some_stuff: list[Union[int, str, float, list[str]]] = [98, "Fido", -34.925, ["Phantom", "Tollbooth"]]
- 3.10及以上版本(原生集合类型+
|替代Union,最简洁):
some_stuff: list[int | str | float | list[str]] = [98, "Fido", -34.925, ["Phantom", "Tollbooth"]]
补充说明
- 要是项目需要兼容3.9及以下版本,还是得保留
Union的导入;但如果只面向3.10+环境,用|的写法更清爽。 - 竖线语法不止能用在集合泛型里,单独变量的类型提示也适用,比如
user_id: int | str = 1001。
内容的提问来源于stack exchange,提问作者Hofbr
相关产品推荐
相关产品推荐

