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

时间:2015-09-05 00:39:09

标签: python ellipsis

有人发布了this interesting formulation,我在Python 3控制台中试用了它:

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

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

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

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

1 个答案:

答案 0 :(得分:13)

它表明dict可以递归,即包含它自己。一个更简单的例子:

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

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

所以它不是一种特殊的价值,只是正常的英语使用" ..."表示"此处省略了某些内容",加上大括号表示省略的部分是dict。您也可以使用括号表示列表,如上所示,或偶尔使用括号表示元组:

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

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