Фрозенцет от python2 до python3

Что изменилось с python2 на python3 с помощью frozenset?

Я заметил это другое поведение: 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})

Почему так? Thanx

1 ответ

Этот вопрос будет лучше направлен, например, на список python.org и может быть еще закрыт. Но я упомяну две вещи.

Во-первых, представления, как и сообщения об исключениях, намеренно не являются частью определения языка. Тем не менее, мы, основные разработчики, консервативны в отношении их изменения, и почти всегда только для новых версий. Выигрыш должен стоить боли взлома кода, даже когда код зависит от функций, указанных как не зависящие.

2.7 вышел после 3.0, который вылез после 2.6. Так что, если новые повторы в 3.0, что я собираюсь предположить здесь, то первый вопрос - почему изменение с 2.6 на 3.0. Ответ заключается в том, что новые представители явно лучше, и 3.0, определенная как выпуск, который сломается больше, чем обычно, будет хорошим временем для внесения изменений. Второй вопрос: почему бы не вернуться к 2.7? Потому что изменения были не такими срочными и недостаточными для людей, придерживающихся 2.x.

Во-вторых, наборы были изначально представлены как импортированный набор. Я забыл, был ли там класс FrozenSet. В любом случае, набор и повторы от Frozenset могли быть основаны на их предшественниках.

Другие вопросы по тегам