Создайте два неизменных объекта с одинаковым значением в Python - PullRequest
3 голосов
/ 17 ноября 2011

Возможно ли в Python создать два неизменных объекта с одинаковым значением?

Чтобы вы поняли, о чем я, вот несколько примеров:

>>> a = 13
>>> b = 13
>>> a is b
True


>>> a = 13
>>> b = 26/2
>>> a is b
True


>>> a = 13
>>> b = int.__new__(int, 13)
>>> a is b
True


>>> a = 13
>>> b = int("13")
>>> a is b
True

Можно ли создать a и b с одинаковым значением, но a is b для возврата False? Просто учусь ....: D

1 Ответ

5 голосов
/ 17 ноября 2011

Конечно, просто выберите слишком большое значение для кэширования:

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a = "hey"
>>> b = "hey"
>>> a is b
True
>>> a = "hey!"
>>> b = "hey!"
>>> a is b
False

Кэшируются только маленькие целые числа и короткие строки (и это зависит от реализации, поэтому вам не следует полагаться наэто все равно).is следует использовать только для проверки объекта идентичность , никогда не для проверки равенство .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...