【问题标题】:What does `{...}` mean in the print output of a python variable?`{...}` 在 python 变量的打印输出中是什么意思?
【发布时间】:2015-12-01 05:19:42
【问题描述】:

有人发帖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 中的一种新类型,我想给它起个名字,以便了解更多信息。

【问题讨论】:

  • 称为“省略号”,请看here和here
  • 这与python的省略号对象无关

标签: python ellipsis


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多