Сравните, если две переменные ссылаются на один и тот же объект в 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 
  • Объекты GAE put_multi (), использующие backend NDB
  • Рекомендуемое использование словаря Python, функции как значения
  • Цель else и, наконец, обработка исключений
  • Пользовательские ключи для моделей Google App Engine (Python)
  • Строковый модуль python vs str
  • Почему скрипт Python для чтения файлов заставляет мой компьютер издавать звуковые сигналы?
  • python .rstrip удаляет один дополнительный символ
  • Повторная строка Python
  • Должно ли мое приложение по умолчанию развертываться на appspot.com?
  • Как отобразить файл jpg в Python?
  • Скомпилируйте основную программу Python с помощью Cython
  • Python - лучший язык программирования в мире.