在打印的 python 2 字典值中,`{...}` 是什么意思?

What does `{...}` mean in a python 2 dictionary value printed?

在调试 python 程序时,我不得不在日志文件上打印一个巨大字典的值。我复制粘贴了该值,当我在 python 2 解释器中分配它时,我得到了 SyntaxError: invalid syntax。什么?这怎么可能?仔细查看后,我发现文件中的字典是这样的:

{'one': 1, 'two': 2, 'three': {...}}

three 的值是 {...} ,这导致了无效语法错误。

将此词典粘贴到 python 2 解释器上会引发 Syntax Error 异常。将其粘贴到 python 3 解释器上,分配的值结果为 {'one': 1, 'two': 2, 'three': {Ellipsis}}

那么,python 2 中的 {...} 是什么意思,为什么语法在 python 2 中无效,即使该值是从 [=27 打印在日志文件中的=] 2 脚本?

如果你这样写字典:

d = dict(one=1, two=2)
d['three'] = d
print(d)

你得到输出

{'one': 1, 'two': 2, 'three': {...}}

(尽管旧版本 Python 的顺序可能有所不同)。

... in container repr 用于表示容器包含自身,这样repr就不会无限递归了。