Вопрос 15 из 16

Основы Python

Разница между is и ==

Показать ответ

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

  • == сравнивает значения
  • is проверяет, ссылаются ли переменные на один объект в памяти

Развернутый ответ

Оператор == проверяет, равны ли значения объектов, то есть их содержимое. Он может быть переопределён в пользовательских классах через метод __eq__().


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


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


a = [1, 2, 3]
b = [1, 2, 3]

print(a == b)  # True — у списков одинаковое содержимое
print(a is b)  # False — это разные объекты в памяти

c = a
print(a is c)  # True — c и a ссылаются на один объект

# Пример с None:
x = None
print(x is None)  # Правильное сравнение