Python函数def后出现的...(省略号)有什么作用?适用场景是什么?
Python 中函数定义后
... 的作用与使用场景 你看到的...是Python中Ellipsis对象的字面量语法,放在函数/方法体位置时,核心作用是标记当前仅定义接口签名,暂不提供具体实现逻辑,常见使用场景如下:
- 写类型存根文件(.pyi)
Python的类型检查工具(如mypy)需要通过存根文件获取第三方库、内置模块的类型信息,这类文件不需要包含实际运行逻辑,只要明确函数、类的参数类型、返回值类型即可,因此全部用...代替函数体。你举例的LockType就是标准库存根的典型写法,用来给threading.Lock这类对象提供类型标注参考。
# 存根文件中的写法示例 def _count() -> int: ...
- 定义抽象接口
编写抽象基类的接口规范时,可以用...代替pass占位,相比pass可读性更强,能直观体现「这是预留的待实现接口」的含义:
from abc import ABC, abstractmethod class BaseCounter(ABC): @abstractmethod def count(self) -> int: ...
- 代码结构占位
搭代码框架时可以先把所有接口的参数、返回值定义完,用...占住函数体位置,后续再补具体实现,这种写法不会触发语法报错,能保证整体结构先跑通。
另外注意你示例里参数默认值位置的...(如blocking: bool = ...)是类型标注的专用写法,用来表示该参数有默认值,但默认值的具体内容不需要在存根中声明。
内容的提问来源于stack exchange,提问作者DAF201
相关产品推荐
相关产品推荐

