Вопрос №37
Осталось:
В чём разница между is и ==?
Образцовый ответ
Показывать ответ по умолчанию
== (сравнение по значению):
Проверяет, равны ли значения двух объектов:
a = [1, 2, 3] b = [1, 2, 3] print(a == b) # True — значения одинаковые
is (сравнение по идентичности):
Проверяет, являются ли две переменные одним и тем же объектом в памяти:
a = [1, 2, 3] b = [1, 2, 3] print(a is b) # False — это разные объекты print(id(a), id(b)) # Разные адреса в памяти c = a print(a is c) # True — c ссылается на тот же объект
Кеширование малых целых чисел:
Python кеширует целые числа от -5 до 256, поэтому:
x = 100 y = 100 print(x is y) # True — кешированный объект x = 1000 y = 1000 print(x is y) # False — разные объекты
Правило использования:
- Используйте is только для сравнения с None:
# Правильно if value is None: print("Нет значения") # Неправильно if value == None: print("Нет значения")
- Для сравнения значений всегда используйте ==.
- is проверяет id() объектов — это полезно только для синглтонов (None, True, False).
