Python .pyi类型存根文件中方法定义使用...的含义是什么
Python
.pyi 类型存根中 ... 写法的作用 你在builtins.pyi里看到的...就是Python内置的省略号(Ellipsis)字面量,在类型存根文件里是标准占位语法,没有运行时的实际逻辑,完全服务于类型检查,你贴的代码里一共对应两种使用场景:
- 作为方法/函数体的占位
.pyi存根文件只需要声明接口的类型签名,不需要写具体实现。所有def定义末尾冒号后面的...就是用来占住函数体的位置,和你平时写空函数用的pass定位一样,就是告诉mypy、Pyright这类类型检查器:这个方法的实际实现是C层面内置的、或者在其他非存根代码里,这里只需要按给出的参数、返回值类型做调用校验就行,不用管内部逻辑。 - 作为可选参数默认值的占位
比如__init__方法里__iterable: Iterable[_T] = ...这部分,参数默认值位置写...的意思是:这个参数是可选的,不传也能正常调用,但它的实际默认值是解释器内置实现的,不需要在存根里写死具体值(比如不用硬写= None,毕竟很多内置方法的默认值实际不是None,只是没必要在类型层面暴露实现细节),类型检查器只要知道“不传这个参数是合法调用”就够了。
这个写法是PEP 484类型提示规范里明确规定的存根标准写法,整个Python官方维护的typeshed类型仓库、所有第三方库的类型声明文件,都统一用这个约定。
内容的提问来源于stack exchange,提问作者BlueJupiter
相关产品推荐
相关产品推荐

