== проверяет равенство значений, is — идентичность объекта. Два разных объекта могут быть равны, но is для них вернёт False.
В чём разница между операторами == и is в Python?
== проверяет равенство значений, is — идентичность объекта. Два разных объекта могут быть равны, но is для них вернёт False.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
== проверяет равенство значений, is — идентичность объекта. Два разных объекта могут быть равны, но is для них вернёт False.
Например, a = [1] и b = [1]: a == b истинно, a is b ложно. После b = a обе переменные ссылаются на один список.
Для None и других специально выбранных singleton-сентинелов используйте проверку идентичности. Для строк и чисел выбирайте равенство, не полагайтесь на кеширование объектов интерпретатором. __eq__ может быть переопределён классом; оператор is такой пользовательской логики не вызывает.