В Python переменные являются ссылками (ссылками) на объекты в памяти, а не контейнерами для самих значений. Когда мы присваиваем значение переменной, она фактически начинает указывать на объект, содержащий это значение. При изменении переменной, ссылающейся на изменяемый объект (например, список или словарь), изменяется сам объект, на который ссылается переменная. При изменении переменной, ссылающейся на неизменяемый объект (например, число, строка или кортеж), создается новый объект в памяти, и переменная начинает указывать на него.
python
Механизм подсчета ссылок (reference counting) используется для автоматического управления памятью. Каждый объект отслеживает количество переменных, ссылающихся на него. Когда счет ссылок достигает нуля, объект становится недоступным, и сборщик мусора освобождает занимаемую им память.
Важное отличие от языков с прямым хранением значений в переменных (например, C): в Python при присваивании b = a не копируется значение a в b, а b начинает ссылаться на тот же объект, на который ссылается a.