В Python есть имена и значения.Оператор присваивания делает имя ссылающимся на значение.Назначение никогда не делает копию, и назначение никогда не изменяет значение.Это только изменяет то, к какому значению относится имя.Передача аргумента в функцию похожа на присваивание: теперь локальное имя аргумента в функции ссылается на переданное значение, и копии никогда не создаются.Этот механизм имен, относящихся к значениям, и присваиваний, изменяющих имена имен, являются одинаковыми для всех объектов в Python, независимо от их типа.
Это сбивает с толку из-за изменяемых и неизменяемых значений.Если вы передадите изменяемое значение (например, список) в функцию и измените значение, тогда имена вызывающих, которые ссылаются на это значение, также увидят измененное значение.Если вы передаете неизменное значение в функцию (например, строку или число), то это значение не может быть изменено никем.