Понимание ссылок и копий списков в Python
@python_quizРазберем этот квиз
Коротко: в Python переменные хранят ссылки на объекты. Для изменяемых объектов (например, списков) присвоение не создаёт копию — оно просто даёт новую ссылку на тот же объект. Это ключ к пониманию поведения кода из квиза.
Условие (код)

Что происходит по шагам
- Создаётся словарь
dataс ключом"nums", значение — список[1, 2]. ref = data["nums"]— переменнаяrefполучает ссылку на тот же список.data["copy"] = data["nums"]— в словарь по ключу"copy"записывается та же ссылка на список (копии нет).ref.append(3)— методappendизменяет объект списка на месте; все ссылки на этот список «видят» изменение.printвыводит текущее состояние списка, на который ссылаютсяdata["nums"]иdata["copy"].
Итог: оба вывода будут [1, 2, 3].
Демонстрация идентичности объектов
Чтобы убедиться, что все три ссылки указывают на один объект, можно проверить id или сравнение по тождеству:

Ожидаемый вывод (id будут одинаковыми, True/True):

Почему другие варианты ответов неверны (короткий разбор)
- Вариант с [1, 2, 3] [1, 2] предполагал бы, что только
data["nums"]поменялся, аdata["copy"]остался прежним — это неверно, потому чтоdata["copy"]хранит ссылку на тот же список. - Вариант с [1, 2] [1, 2, 3] тоже противоречит логике ссылок: изменение через
refповлияет на все ссылки на объект. - Вариант с [1, 2] [1, 2] означал бы отсутствие изменений — тоже неверно, ведь
appendизменил список.
Как получить «независимую» копию списка
Если нужна реальная копия, используйте один из способов копирования:
- Поверхностная копия (создаётся новый список; вложенные изменяемые объекты при этом разделяются):
- срез: copied = original[:]
- метод: copied = original.copy()
- конструктор списка: copied = list(original)
- Глубокая копия (копирует вложенные структуры):
`python
import copy
deep_copy = copy.deepcopy(original)
`
Пример изменения кода, чтобы data["copy"] был отдельным списком:

Результат будет:

Вывод
Когда присваиваете изменяемый объект нескольким переменным (или сохраняете его в разных местах структуры), все они будут ссылаться на один и тот же объект, и изменение через одну ссылку видно всем остальным. Если нужно избежать этого — явно создавайте копию.