Це мій другий день вивчення python (я знаю основи C ++ та деякі ООП.), І у мене є невелика плутанина щодо змінних у python.
Ось як я їх розумію зараз:
Змінні Python - це посилання (або вказівники?) На об'єкти (які можуть бути змінними або незмінними). Коли ми маємо щось на зразок num = 5
, незмінний об'єкт 5
створюється десь у пам'яті, а пара посилань ім'я-об'єкт num
створюється в певному просторі імен. Коли ми маємо a = num
, нічого не копіюється, але тепер обидві змінні посилаються на один і той же об’єкт і a
додаються до одного простору імен.
Тут мене бентежить моя книга « Автоматизувати нудні речі за допомогою Python» . Оскільки це новачок, він не згадує об’єкти, простори імен тощо, і намагається пояснити наступний код:
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
Пояснення, яке він пропонує, точно таке ж, як і в книзі C ++, що я не задоволений, оскільки ми маємо справу з посиланнями / вказівниками на об'єкти. Отже, у цьому випадку, я припускаю, що в 3-му рядку, оскільки цілі числа незмінні, spam
призначається абсолютно новий покажчик / посилання на інше місце в пам'яті, тобто пам’ять, на яку вона вказувала спочатку, не була змінена. Отже, ми маємо на cheese
увазі початковий об'єкт, на який посилається spam
. Це правильне пояснення?