Присвоение в Python всегда происходит по ссылке, то есть переменная ссылается на объект в памяти. Для изменяемых типов (списки, словари) изменения через одну переменную отражаются на всех других переменных, которые ссылаются на этот объект. Для неизменяемых типов (строки, числа, кортежи) присвоение создает новый объект, так как они не могут быть изменены.

Из-за распространенности неизменяемых типов в Python такие объекты, как строки и числа, передаются по значению, что исключает изменения состояния объекта.
