Ответ 1
Вы можете использовать is
, чтобы проверить, имеют ли два объекта одинаковые идентификаторы.
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False
х и у две переменные.
Я могу проверить, равны ли они, используя x == y
, но как я могу проверить, имеют ли они одинаковую идентичность?
Пример:
x = [1, 2, 3]
y = [1, 2, 3]
Теперь x == y
- True, потому что x и y равны, однако x и y не являются одним и тем же объектом.
Я ищу что-то вроде sameObject(x, y)
которое в этом случае должно быть ложным.
Вы можете использовать is
, чтобы проверить, имеют ли два объекта одинаковые идентификаторы.
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False
Чтобы построить ответ от Марка Байерса:
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