-1

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})

どうして?ありがとう

4

1 に答える 1

2

この質問は、たとえば python.org の python-list に向ける方が適切であり、まだ合理的に閉じられている可能性があります。しかし、私は2つのことを言及します。

まず、例外メッセージのような表現は、意図的に言語定義の一部ではありません。それにもかかわらず、私たちコア開発者はそれらの変更について保守的であり、ほとんどの場合、新しいバージョンに対してのみです。コードが依存しないように指定された機能に依存している場合でも、コードを壊すという苦痛に見合う価値があるはずです。

2.7 は 3.0 の後に登場し、3.0 は 2.6 の後にカムアウトしました。したがって、新しい担当者が 3.0 である場合 (ここで推測します)、最初の質問は、2.6 から 3.0 に変更した理由です。答えは、新しい担当者の方が明らかに優れており、3.0 は通常よりも壊れやすいリリースとして定義されているため、変更を加えるのに適した時期であるということです。2 番目の質問は、なぜ 2.7 にバックポートしないのかということです。変更はそれほど緊急ではなく、2.x に固執している人々にとって十分なメリットがなかったからです。

第 2 に、セットはもともとインポートされたセットとして導入されました。FrozenSetクラスもあったか忘れました。いずれにせよ、セットとフリーズセットの担当者は、前任者に基づいている可能性があります。

于 2016-01-19T07:00:20.717 に答える