Как меняется словарь при присвоении ссылки

Вывод будет {1: 'asd'}. Присваивание b = a не создаёт копию словаря: обе переменные указывают на один объект, и изменение через b видно через a.

Короткий ответ

Что ответить на собеседовании

Вывод будет {1: 'asd'}. Присваивание b = a не создаёт копию словаря: обе переменные указывают на один объект, и изменение через b видно через a.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какой вывод будет получен после выполнения приведённого ниже кода.

a = {1: 'qwe'}
b = a
b[1] = 'asd'
print(a)

Ответ

Вывод будет {1: 'asd'}. Присваивание b = a не создаёт копию словаря: обе переменные указывают на один объект, и изменение через b видно через a.

После b[1] = 'asd' меняется значение ключа 1 в общем словаре. Если нужны независимые внешние контейнеры, можно выполнить b = a.copy(); для данного примера со строковыми значениями этого достаточно. При вложенных изменяемых объектах shallow copy всё ещё разделяет вложенные ссылки. Переприсваивание b новому словарю, напротив, не изменило бы объект, на который продолжает ссылаться a.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее