Пусть выполнено a = [1, 2] и b = [1, 2]. Какие значения дадут выражения a == b и a is b?

Aa == b это False, a is b это False: содержимое отличается, объекты разные
Ba == b это False, a is b это True: интерпретатор переиспользует один объект
Ca == b это True, a is b это False: содержимое одинаковое, объекты разные
Da == b это True, a is b это True: одинаковые литералы кешируются как один
Правильный ответ. == сравнивает значения, а is — один ли это объект в памяти.

Разбор

a = [1, 2] и b = [1, 2] создают два отдельных списка с одинаковым содержимым, но это разные объекты в памяти. Поэтому a == b сравнивает значения и даёт True, а a is b сравнивает идентичность объектов и даёт False. Для маленьких целых чисел и коротких строк Python иногда переиспользует объекты, но для списков это не так: каждый литерал создаёт новый объект. Чтобы is дал True, нужно явно написать b = a — тогда обе переменные ссылаются на один и тот же список.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Синтаксис и типы данных»