在空闲地浏览名称空间时,我注意到一个名为Ellipsis的奇怪对象,它看起来没有什么特别之处,也没有做什么特别的事情,但它是一个全局可用的内置对象。

经过搜索,我发现Numpy和Scipy在切片语法的一些模糊变体中使用了它。。。但几乎没有其他。

该对象是否专门添加到语言中以支持Numpy+Scipy?Ellipsis有任何通用的含义或用途吗?

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

当前回答

这是等效的。

l=[..., 1,2,3]
l=[Ellipsis, 1,2,3]

…是在内置常量中定义的常量。

省略与省略号文本“…”相同。特殊值主要与用户定义的容器数据类型的扩展切片语法一起使用。

其他回答

您可以在像numpy这样的自定义切片情况下自己使用Ellipse,但它在任何内置类中都没有使用。

我不知道它是不是专门为在numpy中使用而添加的,但我肯定没有在其他地方看到过它。

另请参阅:如何在Python中使用省略号切片语法?

在Python 3中,您可以¹使用Ellipsis文字。。。作为尚未编写的代码的“nop”占位符:

def will_do_something():
    ...

这不是魔法;可以使用任何表达式来代替。。。,例如。:

def will_do_something():
    1

(不能使用“受制裁”一词,但我可以说,圭多并没有断然拒绝使用这个词。)

¹“can”不在{“must”,“should”}中

在打字机中。。。用于创建必需的参数:Argument类需要默认值,如果传递。。。如果用户没有传递特定的参数,它将发出抱怨。

如果Ellipsis不在,您可以使用None,但这将消除表示None是默认值的机会,以防在程序中有任何意义。

这是等效的。

l=[..., 1,2,3]
l=[Ellipsis, 1,2,3]

…是在内置常量中定义的常量。

省略与省略号文本“…”相同。特殊值主要与用户定义的容器数据类型的扩展切片语法一起使用。

FastAPI使用椭圆来创建所需的参数。https://fastapi.tiangolo.com/tutorial/query-params-str-validations/