Пусть выполнено a = [1, 2] и b = [1, 2]. Какие значения дадут выражения a == b и a is b?
A
a == b это False, a is b это False: содержимое отличается, объекты разныеB
a == b это False, a is b это True: интерпретатор переиспользует один объектC
a == b это True, a is b это False: содержимое одинаковое, объекты разныеD
a == 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 — тогда обе переменные ссылаются на один и тот же список.
Проверь себя · 1/3разбор после ответа
Что вернёт выражение
" Python ".strip()?Ещё вопросы по теме «Синтаксис и типы данных»
- Какой результат вернёт вызов `type(10)`?
- После выполнения `y = str(42)` чему равен `y` и какой у него тип?
- Какая проверка наиболее корректна и идиоматична, чтобы убедиться, что переменная `x` равна `None`?
- Чему равно значение переменной `result` после выполнения строки `result = 3 < 5`?
- Что вернёт выражение `" Python ".strip()`?
- Все вопросы по «Синтаксис и типы данных» →