Присваивание связывает имя с объектом, не копируя его. Одинаковые строки могут разделять объект из-за оптимизаций, но сравнивать их содержимое следует через ==.
Принципы функционирования переменных в Python
Присваивание связывает имя с объектом, не копируя его. Одинаковые строки могут разделять объект из-за оптимизаций, но сравнивать их содержимое следует через ==.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разъяснить механизмы работы переменных в Python: что происходит в момент присваивания, каким образом переменные указывают на объекты, а также почему строки с одинаковым содержимым могут представлять один и тот же объект в памяти.
a = "Hello World"
b = "Hello World"
Ответ
Присваивание связывает имя с объектом, не копируя его. Одинаковые строки могут разделять объект из-за оптимизаций, но сравнивать их содержимое следует через ==.
В выражениях a = 'Hello World' и b = 'Hello World' создаются привязки имён к строковым объектам. Интерпретатор может объединить одинаковые литералы в одном блоке кода или использовать интернирование; это не общее обещание одинаковой идентичности всех равных строк.
a == b проверяет содержимое и здесь истинно. a is b проверяет один ли это объект, поэтому не подходит для логики сравнения строк. Строки неизменяемы: операция вроде a += '!' привяжет a к результату, не изменяя строку, видимую через b.