Что возвращает оператор is при одинаковой инициализации переменных

Будет True: при цепочечном присваивании a = b = 1 оба имени связываются с одним объектом. Это не требует объяснения кешем малых чисел.

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

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

Будет True: при цепочечном присваивании a = b = 1 оба имени связываются с одним объектом. Это не требует объяснения кешем малых чисел.

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

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

Условие

Определите, какое значение будет выведено оператором is, если обе переменные получают один и тот же объект при объявлении.

a = b = 1
print(a is b)

Ответ

Будет True: при цепочечном присваивании a = b = 1 оба имени связываются с одним объектом. Это не требует объяснения кешем малых чисел.

Правая часть цепочечного присваивания вычисляется один раз, после чего результат присваивается обоим именам.

a = b = 1
print(a is b)  # True

is проверяет идентичность, а == — равенство значений. В данном примере идентичность обеспечена самой формой присваивания и сохраняется даже для объекта, который не кешируется:

a = b = []
assert a is b

Если впоследствии переприсвоить a, связь с b не изменится. Для сравнения независимо вычисленных чисел обычно нужен ==, поскольку одинаковые значения не обязаны храниться в одном объекте.

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

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

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

Подробнее