введите ‘set’ разницу между __str__ и прямой печатью

#python #python-3.x #set #python-2.x

#питон #python-3.x #установить #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:

Потому {...} что синтаксис не был введен до Python 2.7, и к тому времени set([...]) repr() формат уже был установлен.

Таким образом, чтобы сохранить существующий код Python 2, который, возможно, полагался на работу set([...]) представления, repr() не был изменен в серии 2.x . В Python 3 {...} с самого начала были обозначения для наборов.