Форум сайта python.su
0
1.
a = 10
b = 10
print(a is b) # True
a = ["Retention", 3, None]
b = ["Retention", 3, None]
print(a is b) # False
Офлайн
32
DauRпотому что они ссылаются на один и тот же объект
1.
a = 10
b = 10
print(a is b) # True
>>> a = 10
>>> b = 10
>>> id(a) == id(b)
True
Офлайн
18
DauR не поверишь
>>> a = 10
>>> b = 10
>>> a is b
True
>>> a = 100500
>>> b = 100500
>>> a is b
False
Офлайн
0
Пайтон очень маленькие значения не клонирует и таким образом хоть две переменные и неизменяемые, они ссылаются на один объект.
Офлайн
0
Разница между is и “==”, is not и “!=”
is сравнивает объекты по указателю, точнее, их уникальные идентификаторы, в то время как “==” сравнивает их значения(если они сравнимы) независимо от расположения.
Базовые типы данных кэшируются, так что для таких переменных чаще всего id одинаковы.
Отредактировано (Дек. 23, 2010 04:09:09)
Офлайн
0
sp3 в твоем втором примере у меня True выводить
Офлайн
0
Как я понял для маленьких переменных если они одинаковы python выводить true, если большие то false?
Офлайн
14
Открываем исходники CPython 2.7
Для типа int кешируются числа в диапазоне -5..256 включительно
Только зачем вам эти малосущественные детали?
Офлайн
26
Андрей СветловНикогда не понимал, почему от -5? Почему не -256 для симметрии? Ну или от нуля, для точности…
Для типа int кешируются числа в диапазоне -5..256 включительно
Офлайн
14
ZZZТаки да. Более того, эту статистику можно включить в любой момент.
Гвидо что, собрал глобальную статистику по частоте использования чисел?
Офлайн