Easyidentity
Чем is отличается от ==?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
is — identity operator: проверяет, что два выражения ссылаются на один объект (id(a) == id(b)). == — equality operator: вызывает __eq__, проверяет логическое равенство.
a = [1, 2]
b = [1, 2]
a == b # True — равны по значению
a is b # False — разные объекты
c = a
c is a # True — один объект
# small integers cached (-5..256)
x = 100; y = 100
x is y # True (CPython optimization)
x = 1000; y = 1000
x is y # обычно False — НЕ гарантированоisиспользовать только для singletons:None,True,False, custom sentinel;x is None— стандартная проверка, лучшеx == None;- Для значений (числа, строки) всегда
==.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.