Python libr: разница между is и ==
Источник: https://t.me/Python_libr/3479
Краткое содержание
Технический мини-урок Python_libr: is проверяет идентичность объектов (то же, что id(a) == id(b)), а == вызывает у левого объекта __eq__, возвращающий True/False. Из-за того, что __eq__ может быть реализован некорректно, для сравнения с None рекомендуют использовать is None.
# Иллюстрация
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True — содержимое равно
print(a is b) # False — разные объекты в памяти
x = None
print(x is None) # ✅ идиоматично
print(x == None) # ❌ работает, но плохо — может быть сломан __eq__ у конкретного класса
Дополнительно: для целых чисел небольшого диапазона (по умолчанию −5..256) CPython держит общий пул, и a is b может оказаться True, хотя это деталь реализации, на которую полагаться нельзя.
Значимость
Стандартный обучающий пост; политической нагрузки нет.
🧾 Транскрипт (формат)
Разница между is и ==
Источник: https://t.me/Python_libr/3479
Разница между is и ==
Оператор is проверяется, являются ли эти две переменные одним и тем же. То же самое, что id(a) == id(b).
Оператор сравнения (==) же вызывает метод __eq__ у левого объекта, который возвращает True или False.
Из-за того, что некоторые могут неправильно реализовать __eq__, рекомендуют использовать is при сравнении на None.
#урок