-1

使用 freezeset 从 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})

为什么?谢谢

4

1 回答 1

2

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

首先,表示,如异常消息,故意不属于语言定义的一部分。尽管如此,我们的核心开发人员对更改它们持保守态度,而且几乎总是只针对新版本。即使代码依赖于指定为不依赖的特性,收益也必须值得破坏代码的痛苦。

2.7 是在 3.0 之后出来的,它是在 2.6 之后出来的。因此,如果新的代表在 3.0 中,我将在这里假设,那么第一个问题是为什么从 2.6 更改为 3.0。答案是新的代表明显更好,而 3.0 被定义为一个比平时更容易崩溃的版本,将是做出改变的好时机。第二个问题是为什么不向后移植到 2.7?因为这种变化并不那么紧迫,而且对于坚持使用 2.x 的人来说收益不足。

其次,套装最初是作为进口套装引入的。我忘记了是否还有一个 FrozenSet 类。无论哪种方式,set 和 freezeset 代表都可能基于他们的前辈。

于 2016-01-19T07:00:20.717 回答