To mój drugi dzień nauki Pythona (znam podstawy C ++ i trochę OOP.) I mam pewne zamieszanie dotyczące zmiennych w Pythonie.
Oto jak je obecnie rozumiem:
Zmienne Pythona są referencjami (lub wskaźnikami?) Do obiektów (które są albo zmienne, albo niezmienne). Kiedy mamy coś podobnego num = 5, niezmienny obiekt 5jest tworzony gdzieś w pamięci, a para odwołań nazwa-obiekt numjest tworzona w określonej przestrzeni nazw. Kiedy mamy a = num, nic nie jest kopiowane, ale teraz obie zmienne odnoszą się do tego samego obiektu ia są dodawane do tej samej przestrzeni nazw.
To jest, gdy moja książka, Automate the nudne stuff with Python , dezorientuje mnie. Ponieważ jest to książka dla początkujących, nie wspomina o obiektach, przestrzeniach nazw itp. I próbuje wyjaśnić następujący kod:
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
Wyjaśnienie, które oferuje, jest dokładnie takie samo jak w książce C ++, z czego nie jestem zadowolony, ponieważ mamy do czynienia z odniesieniami / wskaźnikami do obiektów. Więc w tym przypadku myślę, że w trzecim wierszu, ponieważ liczby całkowite są niezmienne, spamprzypisywany jest zupełnie nowy wskaźnik / odniesienie do innej lokalizacji w pamięci, tj. Pamięć, na którą wskazywał początkowo, nie była modyfikowana. Stąd mamy cheeseodniesienie do początkowego obiektu, do którego odnosi się spam. Czy to właściwe wyjaśnienie?