在闲逛命名空间时,我注意到一个名为 Ellipsis
的奇怪对象,它似乎没有任何特殊之处或没有做任何特别的事情,但它是一个全球可用的内置函数。
经过搜索,我发现它被 Numpy 和 Scipy 用于切片语法的一些模糊变体中……但几乎没有别的。
这个对象是否专门添加到语言中以支持 Numpy + Scipy?省略号有任何通用的含义或用途吗?
D:\workspace\numpy>python
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> Ellipsis
Ellipsis
原文由 Salim Fadhley 发布,翻译遵循 CC BY-SA 4.0 许可协议
这最近出现在另一个 问题 中。我将从那里详细说明我的 答案:
省略号 是可以出现在切片符号中的对象。例如:
它的解释完全取决于实现
__getitem__
函数并看到Ellipsis
对象,但它的主要(和预期)用途是在 numpy 第三方库中,它添加了一个多维数组类型。由于不止一个维度,切片变得比起止索引更复杂;能够在多个维度上进行切片也很有用。例如,给定一个 4 × 4 数组,左上角区域将由切片[:2, :2]
定义:进一步扩展,这里使用省略号来指示未指定的其余数组维度的占位符。将其视为表示完整切片
[:]
对于它放置的间隙中的所有维度,因此对于 3d 数组,a[..., 0]
与a[:, :, 0]
对于 4da[:, :, :, 0]
,类似地,a[0, ..., 0]
是a[0, :, :, 0]
(数组中的中间维度有多少冒号)。有趣的是,在 python3 中,省略号文字 (
...
) 在切片语法之外可用,因此您实际上可以编写:编辑:标准库中也使用省略号
typing
模块:例如Callable[..., int]
tuple[str, ...]
可调用返回int
---
表示可变长度的同构字符串元组。