Это мой второй день изучения python (я знаю основы С++ и некоторые OOP.), и у меня есть небольшая путаница в отношении переменных в python.
Вот как я их понимаю в настоящее время:
Переменные Python являются ссылками (или указателями?) на объекты (которые являются изменяемыми или неизменяемыми). Когда у нас есть что-то вроде num = 5
, неизменный объект 5
создается где-то в памяти, а пара ссылок <имя-объектa > объекта-объекта-name-object создается в определенном пространстве имен. Когда мы имеем a = num
, ничего не копируется, но теперь обе переменные относятся к одному и тому же объекту, а a
добавляется в одно и то же пространство имен.
Здесь меня смущает моя книга "Автоматизация скучных вещей с Python". Поскольку это книга новичков, в ней не упоминаются объекты, пространства имен и т.д., И он пытается объяснить следующий код:
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
Объяснение, которое он предлагает, точно такое же, как и в книге на С++, что мне не нравится, поскольку мы имеем дело со ссылками/указателями на объекты. Таким образом, в этом случае я полагаю, что в 3-й строке, поскольку целые числа неизменны, spam
получает совершенно новый указатель/ссылку на другое место в памяти, то есть память, на которую она первоначально указывала, не была изменена, Следовательно, мы имеем cheese
, ссылаясь на начальный объект, на который ссылается spam
. Это правильное объяснение?