输入'set'在__str__和直接打印之间的区别

时间:2016-10-14 08:34:38

标签: python python-3.x set python-2.x

In [1]: import sys

In [2]: sys.version_info
Out[2]: sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)

In [3]: b=set([10,20,40,32,67,40,20,89,300,400,15])

In [4]: b
Out[4]: {10, 11, 15, 20, 32, 40, 67, 89, 111, 300, 400}
In [1]: import sys

In [2]: sys.version_info
Out[2]: sys.version_info(major=2, minor=7, micro=12, releaselevel='final', serial=0)

In [3]: b=set([10,20,40,32,67,40,20,89,300,400,15])

In [4]: b
Out[4]: set([32, 67, 40, 10, 11, 300, 15, 400, 20, 89, 111])

为什么2和3之间会有所不同?

1 个答案:

答案 0 :(得分:4)

因为{...}语法wasn't introduced until Python 2.7,并且到那时已经建立了set([...]) repr()格式。

因此,为了保留可能依赖于set([...])表示的现有Python 2代码,repr()在2.x系列中没有更改。 Python 3从一开始就为集合设置了{...}符号。