Я бегу следующий код в IPython и удивляюсь печатающих выходов и выходов IPython ячейки кода:Почему вывод ipython отличается от __repr__ или __str__ набора?
print set(["A", "B", "C"])
print set(["A", "C", "B"])
print list(set(["A", "C", "B"]))
print list(set(["A", "B", "C"]))
print [k for k in set(["A", "C", "B"])]
print [k for k in set(["A", "B", "C"])]
a = set(["A", "B", "C"])
print a
print a.__repr__()
print a.__str__()
print [(k, hash(k)) for k in a]
a
Выход выше программы выглядит следующим образом:
set(['A', 'C', 'B'])
set(['A', 'C', 'B'])
['A', 'C', 'B']
['A', 'C', 'B']
['A', 'C', 'B']
['A', 'C', 'B']
set(['A', 'C', 'B'])
set(['A', 'C', 'B'])
set(['A', 'C', 'B'])
[('A', -269909568), ('C', -13908798), ('B', -141909181)]
Out[34]: {'A', 'B', 'C'}
Обратите внимание, что на выходе ячейки {'A', 'B', 'C'}
в то время как печатная продукция является set(['A', 'C', 'B'])
Моей Python деталь следующим образом:
import sys
print sys.version
2.7.11 |Anaconda 2.3.0 (64-bit)| (default, Jan 29 2016, 14:26:21) [MSC v.1500 64 bit (AMD64)]