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

What does `{...}` mean in the print output of a python variable?

有人发帖 ,我在 Python 3 控制台上试了一下:

>>> (a, b) = a[b] = {}, 5
>>> a
{5: ({...}, 5)}

虽然这里有很多东西要解压,但我不明白(有趣的字符表达的语义似乎特别难以搜索)是 {...} 在这种情况下的意思?稍微改变一下上面的内容:

>>> (a, b) = a[b] = {'x':1}, 5
>>> a
{5: ({...}, 5), 'x': 1}

真正让我困惑的是第二个输出:我本以为 {...} 会被改变,但我最接近的 猜测 , 5 表示第一个元素不知何故未定义的元组?那就是 {...} 的意思?如果是这样,这对我来说是 Python 中的一个新类型类别,我想为它取一个名字,以便我了解更多。

这表明 dict 递归,即包含自身。一个更简单的例子:

>>> a = []
>>> a.append(a)
>>> a
[[...]]

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

所以它不是一个特殊类型的值,只是正常的英语使用“...”表示"something was omitted here",加上大括号表示省略的部分是字典。您可能还会看到它带有用于列表的括号,如上所示,或者偶尔带有用于元组的括号:

>>> b = [],
>>> b[0].append(b)
>>> b
([(...)],)

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

的形式执行此操作