dict1
- это символ, который ссылается на базовый объект словаря. Назначение dict1
- dict2
просто присваивает ту же ссылку. Изменение значения ключа с помощью символа dict2
изменяет базовый объект, что также влияет на dict1
. Это запутанно.
Гораздо проще рассуждать о неизменяемых значениях, чем ссылки, поэтому по возможности делайте копии:
person = {'name': 'Mary', 'age': 25}
one_year_later = {**person, 'age': 26} # does not mutate person dict
Это синтаксически то же самое, что:
one_year_later = dict(person, age=26)