Python ...Ellipsis省略号的用法 作者:马育民 • 2026-08-12 22:36 • 阅读:10000 # 介绍 在 Python 中,`...` 被称为 **Ellipsis**(省略号)对象。它是一个单例对象(就像 `None`、`True`、`False` 一样,全局只有一个实例)。 # 1. 作为占位符 (常用) 这是最常见的用法。当你写代码时还没想好具体实现,或者在定义抽象方法时,可以用 `...` 代替 `pass`。 ```python def my_function(): ... # 比 pass 看起来更明确地表示“这里以后要写代码” class MyInterface: def do_something(self): ... # 抽象方法占位 ``` # 2. 作为函数的默认参数值 (常用) 因为 `...` 是单例对象,所以可以用 `is` 来精确判断,非常适合用来区分“用户没传参数”和“用户传了 `None`”的情况。 ```python def connect(host, port=None, timeout=...): if timeout is ...: # 用户没传 timeout,使用内部默认逻辑 timeout = 30 elif timeout is None: # 用户明确传了 None,表示无限等待 timeout = float('inf') else: timeout = timeout ``` # 3. NumPy 数组索引 (较常用) NumPy中,`...` 是个神器,代表**“选中当前维度剩下的所有维度”**。 ```python import numpy as np arr = np.zeros((3, 4, 5)) # 下面这两行是完全等价的: print(arr[0, ...]) # 选中第 0 个,后面所有维度都保留 print(arr[0, :, :]) # 传统写法 ``` 这在处理高维张量(比如深度学习中的图像/视频数据)时能省下大量写 `:` 的麻烦。 # 4. 类型提示 (Type Hinting) 在 `typing` 模块中,`...` 用来表示**可变长度的元组**或**任意参数**。 ```python from typing import Callable, Tuple # 表示一个接受任意数量、任意类型参数,并返回 int 的函数 MyFunc = Callable[..., int] # 表示一个包含任意数量 int 的元组 MyTuple = Tuple[int, ...] ``` # 5. 自定义类中的切片 (Slicing) 当你用 `obj[...]` 时,Python 会把 `...` 作为参数传给 `__getitem__`。 ```python class MyGrid: def __getitem__(self, key): if key is ...: return "你选中了整个网格!" return f"你选中了: {key}" grid = MyGrid() print(grid[...]) # 输出: 你选中了整个网格! ``` --- # 总结 * 写普通业务逻辑占位:用 `pass` 或 `...` 都可以,`...` 视觉上更醒目。 * NumPy / Pandas:用 `...` 代替连续的 `:`。 * 写框架 / 库:用 `...` 做默认参数或切片语法糖。 * **千万不要** 把 `...` 当作 `True` 或 `False` 来用,虽然它在布尔上下文中是 `True`,但这属于滥用。 原文出处:/show_1GW3qnVbsdsv.html