Python-Variablen sind keine "Referenzen" im Sinne von C++. Sie sind einfach lokale Namen, die an einem beliebigen Ort im Speicher an ein Objekt gebunden sind. Wenn dieses Objekt selbst veränderbar ist, sind Änderungen daran in anderen Bereichen sichtbar, die einen Namen an das Objekt gebunden haben. Viele primitive Typen (einschließlich bool
, int
, str
und tuple
) sind unveränderlich jedoch. Sie können ihren Wert nicht direkt ändern. Stattdessen weisen Sie demselben Namen in Ihrem lokalen Bereich einen neuen Wert zu.
In der Tat, fast jede Zeit * Sie Code des Formulars sehen foo = X
, bedeutet dies, dass der Name foo
wird einen neuen Wert zugewiesen wird (X
) im aktuellen lokalen Namensraum, das nicht eine Stelle im Speicher durch foo
benannt ist Der interne Zeiger wurde aktualisiert, um stattdessen auf den Speicherort von X
zu verweisen.
* - die einzige Ausnahme in Python sind Setter-Methoden für Eigenschaften, die es Ihnen ermöglichen, obj.foo = X
zu schreiben und es im Hintergrund umschreiben zu lassen, um stattdessen eine Methode wie obj.setFoo(X)
aufzurufen.
Duplizieren, siehe http://stackoverflow.com/questions/534375/passing-values-in-python –