Python 省略对象是做什么的?

Python 省略对象是做什么的?,python,ellipsis,Python,Ellipsis,在悠闲地浏览名称空间时,我注意到一个奇怪的对象,名为省略号,它似乎没有什么特别之处,也没有做任何特别的事情,但它是一个全局可用的内置对象 经过一次搜索,我发现它被Numpy和Scipy用在一些模糊的切片语法变体中。。。但几乎没有别的 将此对象添加到语言中是否专门用于支持Numpy+Scipy?省略号有任何一般意义或用法吗 D:\workspace\numpy>python Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bi

在悠闲地浏览名称空间时,我注意到一个奇怪的对象,名为
省略号
,它似乎没有什么特别之处,也没有做任何特别的事情,但它是一个全局可用的内置对象

经过一次搜索,我发现它被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

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

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


另请参见:

您可以自己使用省略号,在numpy已经完成的自定义切片情况下使用省略号,但它在任何内置类中都没有用处

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

另请参见:

中的:

此对象通常用于切片(请参见)。它不支持 特别行动。只有一个省略号对象,名为 省略号(内置名称)<代码>类型(省略号)(生成省略号 辛格尔顿

它写为
省略号

从:

此对象通常用于切片(请参见)。它不支持 特别行动。只有一个省略号对象,名为 省略号(内置名称)<代码>类型(省略号)(生成省略号 辛格尔顿

它写为
省略号

这是最近在另一次会议上提出的。我将从这里详细阐述我的观点:

是可以以切片表示法显示的对象。例如:

myList[1:2, ..., 0]
它的解释完全取决于实现
\uuu getitem\uuu
函数并在其中查看
省略号
对象的任何内容,但它的主要(和预期)用途是在第三方库中,该库添加了多维数组类型。由于存在不止一个维度,切片变得比仅仅开始和停止索引更复杂;能够在多个维度中进行切片也很有用。例如,给定一个4x4数组,左上方区域将由切片
[:2,:2]
定义:

>>> a
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])

>>> a[:2,:2]  # top left
array([[1, 2],
       [5, 6]])
进一步扩展,这里使用省略号表示未指定的其余数组维度的占位符。可以将其视为指示间隙中所有尺寸的完整切片,因此对于3d阵列,
a[…,0]
a[…,:,0]
相同,对于4d,
a[:,:,:,:,0]
,类似地,
a[0,…,0]
a[0,:,:,,,,,,,,,,,,,,,,,,,
(中间有许多冒号构成数组中的全部维数)。

有趣的是,在python3中,省略号文本(
)在切片语法之外是可用的,因此您实际上可以编写:

>>> ...
Ellipsis
除了各种数字类型之外,不,我认为没有使用它。据我所知,它纯粹是为了numpy使用而添加的,除了提供对象和相应的语法外,没有其他核心支持。那里的对象不需要这个,但是文字“…”对切片的支持确实存在。

最近在另一篇文章中提到了这一点。我将从那里详细介绍我的观点:

是可以以切片表示法显示的对象。例如:

myList[1:2, ..., 0]
它的解释完全取决于实现
\uuu getitem\uuu
函数并在那里看到
省略号
对象的任何东西,但是它的主要(和预期的)对象使用在第三方库中,该库添加了多维数组类型。由于存在多个维度,切片变得比仅开始和停止索引更复杂;能够在多个维度中切片也很有用。例如,给定4x4数组,左上角区域将由切片定义
[:2,:2]

>>> a
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])

>>> a[:2,:2]  # top left
array([[1, 2],
       [5, 6]])
进一步扩展,这里使用省略号来表示未指定的其余数组维度的占位符。可以将其视为表示放置在间隙中的所有维度的完整切片,因此对于三维数组,
a[…,0]
a[:,:,0]
相同,对于4d,
a[,:,:,:,0]< /代码>,同样地,<代码> a(0,…,0)< /C> >是代码> A[ 0,,:,0 ] < /C> >(但是,中间的许多冒号构成数组中的全维)。
有趣的是,在python3中,省略号文本(
)在切片语法之外是可用的,因此您实际上可以编写:

>>> ...
Ellipsis
除了各种数字类型之外,不,我认为没有使用它。据我所知,它纯粹是为了numpy使用而添加的,除了提供对象和相应的语法外,没有其他核心支持。那里的对象不需要这个,但是文字“…”对切片的支持已完成。

在Python 3中,您可以使用省略号literal
..
作为尚未编写的代码的“nop”占位符:

def will_do_something():
    ...
这是魔术;可以使用任何表达式代替
,例如:

def will_do_something():
    1
(不能使用“制裁”这个词,但我可以说这是Guido使用的。)

在Python 3中,您可以使用省略号literal
作为尚未编写代码的“nop”占位符:

def will_do_something():
    ...
这是魔术;可以使用任何表达式代替
,例如:

def will_do_something():
    1
(不能使用“制裁”这个词,但我可以说这是Guido使用的。)


“%code>'can'不在{'must'、'should'}

指定预期输出时,也可以使用省略号:

类MyClass(对象):
“”“doctest省略号示例
>>>thing=MyClass()
>>>#匹配和
>>>类型(thing)#doctest:+省略号
"""
通过

指定预期输出时,也可以使用省略号:<