Frozenset从python2到python3

时间:2016-01-18 12:51:12

标签: python-2.7 python-3.x frozenset

使用frozenset从python2更改为python3的内容是什么?

我注意到了这种不同的行为: Python2:

>>> a=frozenset()
>>> a
frozenset([])

Python3

>>> a= frozenset()
>>> a
frozenset()

还有:

Python2

>>> a=frozenset((1,2,3))
>>> a
frozenset([1,2,3])

Python3

>>> a=frozenset((1,2,3))
>>> a
frozenset({1,2,3})

为什么? 感谢名单

1 个答案:

答案 0 :(得分:2)

这个问题可以更好地指向例如python.org的python-list,并且可能会合理地关闭。但我会提到两件事。

首先,表示与异常消息一样,故意不属于语言定义。尽管如此,我们的核心开发人员对于更改它们仍然保守,而且几乎总是只针对新版本。即使代码依赖于指定为不依赖的功能,增益也必须值得打破代码的痛苦。

2.7在3.0之后出现,在2.6之后出现。因此,如果新的代表在3.0中,我将在这里假设,那么第一个问题是为什么从2.6变为3.0。答案是,新的销售代表显然更好,而3.0被定义为一个比平常更多的版本,将是进行更改的好时机。第二个问题是为什么不向2.7后退?因为改变不是 紧急,而且对于坚持使用2.x的人来说收益不足。

其次,集合最初是作为导入的集合引入的。我忘了是否还有一个FrozenSet类。无论哪种方式,集合和冻结集合代表可能都是基于它们的前辈。