В Python оператор is проверяет, указывают ли две переменные на один и тот же объект в памяти (т.е. сравнивает идентичность объектов). Оператор == проверяет равенство значений объектов, то есть вызывается метод eq и сравниваются содержимое или логика равенства.
Python: сравнение списков через is и ==
В Python оператор is проверяет, указывают ли две переменные на один и тот же объект в памяти (т.е. сравнивает идентичность объектов).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
a = [1, 2, 3] b = [1, 2, 3] c = a
print(a == b) print(a is b) print(a is c)
class A: def init(self): print("A init")
class B(A): def init(self): print("B init") super(). init()
class C(A): def init(self): print("C init") super(). init()
class D(B, C): def init(self): print("D init") super(). init()
d = D()
Ответ
В Python оператор is проверяет, указывают ли две переменные на один и тот же объект в памяти (т.е. сравнивает идентичность объектов). Оператор == проверяет равенство значений объектов, то есть вызывается метод __eq__ и сравниваются содержимое или логика равенства.
Пример:
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True, т.к. b ссылается на тот же объект
print(a == b) # True, значения совпадают
print(a is c) # False, разные объекты
print(a == c) # True, значения списков равны
Таким образом, is — это проверка идентичности (один объект), а == — проверка равенства по содержимому.