`{...}`在python变量的打印输出中是什么意思?

Nat*_*ord 8 python ellipsis

有人发布了这个有趣的公式,我在Python 3控制台中试了一下:

>>> (a, b) = a[b] = {}, 5
>>> a
{5: ({...}, 5)}
Run Code Online (Sandbox Code Playgroud)

虽然这里有很多需要解压缩的东西,但是我不理解的东西(以及有趣的角色配方的语义似乎特别难以搜索){...}在这种背景下的意义是什么?改变上面的一点:

>>> (a, b) = a[b] = {'x':1}, 5
>>> a
{5: ({...}, 5), 'x': 1}
Run Code Online (Sandbox Code Playgroud)

这是第二个输出让我感到困惑:我本来期望它{...}会被改变,但我最接近的猜测, 5暗示一个元组,其中第一个元素以某种方式未定义?那是什么{...}意思?如果是这样,这是我在Python中的一个新类型,我希望有一个名称,以便我可以了解更多.

Eev*_*vee 14

这表明dict是recurses,即包含它自己.一个更简单的例子:

>>> a = []
>>> a.append(a)
>>> a
[[...]]
Run Code Online (Sandbox Code Playgroud)

这是一个唯一元素本身的列表.显然,repr不能按字面打印,否则会无限长; 相反,内置类型会在发生这种情况时发出通知并用于...表示自我控制.

所以它不是一种特殊类型的价值,只是正常的英语使用"......"表示"这里省略了什么",加上大括号表示省略的部分是一个字典.您也可以使用括号表示列表,如上所示,或偶尔使用括号表示元组:

>>> b = [],
>>> b[0].append(b)
>>> b
([(...)],)
Run Code Online (Sandbox Code Playgroud)

Python 3提供了一些工具,因此您可以使用自己的对象来执行此操作reprlib.