Python类型提示中|运算符的用法疑问(gdsfactory代码场景)
Python类型提示中的
|运算符与None的特殊用法 1. |在类型提示中的角色
你看到的|不是按位或运算符,而是Python 3.10+引入的联合类型语法糖(对应PEP 604规范),用来替代旧的Union类型写法。它的作用是明确参数可以接受多种类型中的任意一种:
- 比如
filename: str | pathlib.Path,表示filename参数既可以传入字符串类型,也可以传入pathlib.Path对象,两种类型都符合类型检查要求。 - 这种写法比旧的
Union[str, pathlib.Path]更简洁直观,现在已经成为Python类型提示的标准写法之一。
2. 为什么用None而非NoneType
在类型提示体系中,None是NoneType的唯一实例,Python的类型检查器(如mypy、pyright)直接支持用None来表示“参数可以为None”的场景:
- 例子里的
save_options: kdb.SaveLayoutOptions | None = None,等价于Union[kdb.SaveLayoutOptions, NoneType],但写| None更符合日常代码的阅读习惯,也更简洁。 - 这种简化写法是Python类型提示的约定,所有主流类型检查工具都能识别并正确处理。
补充说明
gdsfactory项目采用这种写法,说明它基于Python 3.10及以上版本开发,充分利用了新版本的语法特性来提升代码的可读性和简洁性。
内容的提问来源于stack exchange,提问作者Eve
相关产品推荐
相关产品推荐

