Вопрос 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) # Правильное сравнение