Чем двойное равенство `==` отличается от `is` в Python?

== сравнивает значения по правилам типа, а is проверяет, один ли это объект. Для проверки None обычно используют is; для содержимого чисел, строк и коллекций — ==.

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

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

== сравнивает значения по правилам типа, а is проверяет, один ли это объект. Для проверки None обычно используют is; для содержимого чисел, строк и коллекций — ==.

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

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

== сравнивает значения по правилам типа, а is проверяет, один ли это объект. Для проверки None обычно используют is; для содержимого чисел, строк и коллекций — ==.

Два разных списка [1, 2] равны по содержимому, но не идентичны. Если две переменные ссылаются на один список, is вернёт True. Поведение == можно определить через __eq__, тогда как is не перегружается. Интернирование строк и кеширование некоторых чисел — не основание сравнивать их через is: такие детали могут отличаться между реализациями и контекстами исполнения.

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

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

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

Подробнее