Python: сравнение списков через is и ==

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

Короткий ответ

Что ответить на собеседовании

В Python оператор is проверяет, указывают ли две переменные на один и тот же объект в памяти (т.е. сравнивает идентичность объектов). Оператор == проверяет равенство значений объектов, то есть вызывается метод eq и сравниваются содержимое или логика равенства.

Подробный разбор

Ответ с пояснениями

Условие

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 — это проверка идентичности (один объект), а == — проверка равенства по содержимому.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее