Подтвердить что ты не робот

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

х и у две переменные.
Я могу проверить, равны ли они, используя x == y, но как я могу проверить, имеют ли они одинаковую идентичность?

Пример:

x = [1, 2, 3]
y = [1, 2, 3]

Теперь x == y - True, потому что x и y равны, однако x и y не являются одним и тем же объектом.
Я ищу что-то вроде sameObject(x, y) которое в этом случае должно быть ложным.

4b9b3361

Ответ 1

Вы можете использовать is, чтобы проверить, имеют ли два объекта одинаковые идентификаторы.

>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False

Ответ 2

Чтобы построить ответ от Марка Байерса:

is оценка различать идентичность будет работать, когда переменные содержат объекты, а не примитивные типы.

object_one = ['d']
object_two = ['d']
assert object_one is object_two  # False - what you want to happen

primitive_one = 'd'
primitive_two = 'd'
assert primitive_one is primitive_two  # True - what you don't want to happen

Если вам нужно сравнить примитивы, я бы предложил использовать встроенную функцию id().
Из документов Python:

Вернуть "личность" объекта. Это целое число, которое гарантированно будет уникальным и постоянным для этого объекта в течение его жизни.

Так что это станет так:

assert id(primitive_one) == id(primitive_two)  # False