Easyidentity

Чем is отличается от ==?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

isidentity 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 подскажет развёрнутый ответ в реальном времени.