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 5
jest tworzony gdzieś w pamięci, a para odwołań nazwa-obiekt num
jest 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, spam
przypisywany 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 cheese
odniesienie do początkowego obiektu, do którego odnosi się spam
. Czy to właściwe wyjaśnienie?