Вывод будет {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.