Сравните, если две переменные ссылаются на один и тот же объект в python

Как проверить, ссылаются ли две переменные на один и тот же объект?

x = ['a', 'b', 'c'] y = x # x and y reference the same object z = ['a', 'b', 'c'] # x and z reference different objects 

4 Solutions collect form web for “Сравните, если две переменные ссылаются на один и тот же объект в python”

То, что is для: x is y

y is x будет True, y is z будет False .

Вы также можете использовать id (), чтобы проверить, к какому уникальному объекту относится имя переменной.

 In [1]: x1, x2 = 'foo', 'foo' In [2]: x1 == x2 Out[2]: True In [3]: x1 is x2 Out[3]: True In [4]: id(x1), id(x2) Out[4]: (4367888016, 4367888016) In [5]: x2 = x2 + 'bar' In [6]: x1 is x2 Out[6]: False In [7]: id(x1), id(x2) Out[7]: (4367888016, 4369529616) 

Хотя два правильных решения x is z и id(x) == id(z) я хочу указать деталь реализации python. Python хранит целые числа в качестве объектов, а в качестве оптимизации он генерирует кучу небольших целых чисел в начале (от -5 до 256) и указывает, что каждая переменная содержит целое число с небольшим значением для этих preinitialized объектов. Больше информации

Это означает, что для целочисленных объектов, инициализированных на одни и те же маленькие числа (от -5 до 256), проверка того, что оба объекта одинаковы, вернет true (ON C-Pyhon, насколько мне известно, это деталь реализации), тогда как для более крупных числа, это возвращает только true, если один объект инициализирован другим.

 > i = 13 > j = 13 > i is j True > a = 280 > b = 280 > a is b False > a = b > a 280 > a is b True 
  • Python: устранение следов стека в библиотечный код?
  • не удалось установить __main __.__ loader__ в Python
  • PermanentTaskFailure: объект 'module' не имеет атрибута 'Migrate'
  • Распаковка аргументов ключевого слова, но только те, которые соответствуют функции
  • Поиск Google с использованием скрипта python
  • TypeError: не может умножить последовательность на non-int типа 'str'
  • Файлы загрузки API для Google Диска - python - файлы не загружены
  • python, доступ к переменной суперкласса в дочернем классе
  • Python - лучший язык программирования в мире.