Вопрос:
В чём различие оператора "is" от оператора "=="?
Как часто спрашивают: Постоянно
Кто предложил: ALittleMoron
Ответ:
Отличие в том, что == сравнивает по значению, а is - по адресу в памяти.
2 объекта могут быть равны по своему значению или по своей структуре, но могут не являться одним и тем же объектом. Например, ["a", "b"] == ["a", "b"] даст нам True, но ["a", "b"] is ["a", "b"] даст нам False.
Объяснение ответа на собеседовании:
Данный вопрос является вводным к понимаю того, как Python хранить объекты у себя внутри.
Понимание того, что такое адрес в памяти и почему кажущиеся одинаковыми объекты могут иметь разный адрес в памяти (то есть по сути являться разными объектами), - это важная часть языка. Также это тесно связано с указателями, которые в Python скрыты, а в других языках, таких как C, C++, Rust могут играть важную роль в написании кода, и понимать все эти темы важно с точки зрения понимания общих для всех языков концепций.
Интервьюер далее может углубиться в этот вопрос, уточняя, почему именно is и == отличаются, а также почему списки работают одним образом, а например, числа 5 is 5 дадут True?