Python中'...'运算符作用是什么?为何内置类方法都返回它?
Python内置类类型存根中
...符号的含义 你看到的这些代码属于Python的类型存根文件(.pyi文件),不是str类的实际实现代码——Python大部分内置类型底层用C实现,类型存根的作用是给mypy、pyright这类静态类型检查工具提供类型标注参考,本身不会被执行。
符号的具体含义
...是Python的内置Ellipsis(省略号)对象,在类型存根里有两个核心作用:
- 作为方法体的占位符:存根只需要声明方法的入参类型、返回值类型,不需要写实际执行逻辑,因此用
...代替整个函数体即可 - 作为默认参数的占位符:表示该参数存在默认值,但默认值的具体内容不需要在存根中声明,只需要明确参数类型即可,比如示例里的
__fillchar: str = ...就说明fillchar是字符串类型、有默认值,调用时可以不传。
为什么选用...而非其他内容
- 符合官方规范:PEP 484(Python类型提示标准)明确规定类型存根中无实现的方法体、不需要暴露的默认参数统一使用省略号表示,是Python类型生态约定俗成的标准,所有静态类型检查工具都原生支持识别。
- 语法通用性强:
...本身是Python合法的表达式,既可以放在函数体位置当占位符,也可以放在默认参数的位置当标识,不需要针对不同场景换不同写法。如果用pass只能当函数体占位符,不能用在默认参数位置;如果用注释的话还会被静态检查工具忽略,不如...适用场景全面。 - 辨识度高:开发者可以一眼区分出这是类型存根的声明内容,和实际的业务实现代码做明确区隔。
内容的提问来源于stack exchange,提问作者Tom McLean
相关产品推荐
相关产品推荐

