Вопрос проверяет понимание модели памяти Python и различий между объектами и ссылками.
В Python присваивание не копирует объект, а создаёт новую ссылку на уже существующий объект. Переменная становится именем, указывающим на объект в памяти. Если объект изменяемый, изменения будут видны через все ссылки. Для неизменяемых объектов создаётся новый объект при изменении значения. Это поведение важно для понимания побочных эффектов.
В Python переменные не хранят данные напрямую — они ссылаются на объекты.
Присваивание — это операция связывания имени с объектом, а не копирование значения.
Перед примерами важно зафиксировать модель:
Создание объекта
если объект ещё не существует
выделяется память
Привязка имени
имя переменной указывает на объект
увеличивается счётчик ссылок
Отсутствие копирования
данные не дублируются
несколько имён могут ссылаться на один объект
a = [1, 2]
b = a
b.append(3)
a и b указывают на один список, изменения видны через обе переменные.
x = 10
y = x
y += 1
Создаётся новый объект 11, x остаётся ссылаться на 10.
Понимание присваивания в Python критично для работы с изменяемыми объектами и предотвращения неявных ошибок.