Python 3.10+可选类型标注:Optional[Type]和Type | None哪个更推荐
Python 3.10+ 可选类型标注规范解答
两种可选类型写法的推荐选择
Python 3.10及更高版本更推荐使用选项2的管道运算符写法:
def f(parameter: int | None) -> str | None:
推荐原因如下:
- 不需要额外从
typing模块导入Optional依赖,代码更简洁 - 语法直观易懂,开发者可以直接看出「类型支持指定类型或None」的含义,可读性更高
- 该写法是PEP 604明确规定的标准类型标注语法,已经成为当前Python生态的主流规范
如果你需要兼容Python 3.9及更低版本,才需要使用
Optional[int]的写法,低版本Python不支持管道运算符的类型标注语法。
Type | None与None | Type的顺序偏好
官方没有强制规定二者的书写顺序,但行业通用约定优先使用Type | None的写法,原因如下:
- 符合语义逻辑:参数或返回值的核心类型是前者的
Type,仅额外补充可能为None的场景,开发者第一眼就能识别核心类型 - 绝大多数Python开源项目都遵循该约定,统一写法可以降低团队协作的沟通理解成本
内容的提问来源于stack exchange,提问作者lmiguelvargasf
相关产品推荐
相关产品推荐

