Python省略号用法
1
2
3
在 Python 中,省略号(... 或 Ellipsis) 是一个内置的单例对象,类型为 ellipsis,无需导入即可直接使用。它的主要作用包括占位符、类型提示以及 NumPy 高维切片等。
基本特性
print(type(...)) # <class 'ellipsis'>
print(Ellipsis == ...) # True
复制
... 与 Ellipsis 等价,常用于代码结构占位,类似 pass。
1. 占位符与函数存根 在未实现函数或方法时,可用 ... 保持代码结构完整,避免语法错误:
def my_function():
class MyClass:
def my_method(self):
复制
这种方式在调试模式下替代实际逻辑,常用于 API 设计或测试中屏蔽副作用。
2. 类型提示中的应用 在 PEP 484 类型注解中,省略号可表示:
可变长度同类型元组:
numbers: tuple[int, ...] # 任意长度的 int 元组
复制
不限制参数签名的可调用对象:
from typing import Callable
def calculate(i: int, action: Callable[..., int], *args: int) -> int:
return action(i, *args)
复制
这里 Callable[..., int] 表示参数数量和类型不限,但返回值必须是 int。
3. NumPy 高维数组切片 在多维数组中,... 表示“所有剩余维度”,简化切片操作:
import numpy as np
arr = np.random.randint(0, 10, (2, 2, 2))
print(arr[..., 0]) # 取最后一维的第一个元素
复制
相比手动写多个冒号,... 更简洁且适应动态维度。
4. 其他场景
REPL 提示符:在交互式解释器中,... 可能只是多行输入提示符,并非 Ellipsis 对象。
循环引用显示:打印包含自引用的对象时,Python 用 ... 避免无限递归输出。
总结 ... 在 Python 中不仅是语法糖,更是占位、类型灵活性和高维数据处理的利器。熟练掌握它,可以提升代码的可读性与可维护性。