def new_val(x):
x['a'] = 5
return x
b = {'a': 2}
b = new_val(b) # b re-assigned to ret val
Поскольку словари являются изменяемыми, b является ссылочным указателем на словарь, и мы передаем этот указатель в функцию new_val.
Ссылка на словарь не изменяется, но ссылка на 2 словаря меняется на 5.
Исходная переменная b теперь должна иметь «a» для отображения на 5. Однако мне интересно, изменяется ли когда-либо ссылка на словарь (другими словами, указатель на переменную b).
Технически, мы «переназначаем» ссылочную переменную b на ссылку, которая оказывается одинаковой.
Что происходит на низком уровне? Похоже ли это на запрет, когда какая-то логика распознает, что ссылка одна и та же, или ссылка действительно не назначена и не переназначена?
Возможно, более простой пример будет:
b = {}
b = b # At a low level, what does this line do?