Es ist einfach. In Python sind die Namen wie a
und b
und t
nicht Objekte, sie zeigen nur auf Objekte. Wenn Sie
>>> a = 25
>>> b = 50
eingeben a
Python setzt der Name 25
und b
zu einem int
Objekt mit Wert Punkt 50
mit Wert zu int
Objekt zu zeigen.
beim Erstellen eines Tupels mit
>>> t = a, b
(ohne Klammern hier erforderlich!) Sie sagen Python, dass "bitte ein neues Tupel aus 2 Elementen erstellt, dessen erste Position auf das Objekt a
jetzt zeigen sollte, und die zweite Position sollte auf das Objekt zeigen, das b
jetzt zeigt . Eigentlich wäre es auch in ähnlicher Weise mit einer Liste, oder setzen sie arbeiten:
>>> l = [a, b]
>>> s = {a, b}
nun ist die nächste Anweisung:
>>> a = 50
Means „jetzt, a
zu einem int
-zu-Punkt gesetzt o bject mit Wert von 50
". Das erste Element des Tupels zeigt weiterhin auf 25
. Eigentlich alle Zuweisungen an Variablen auf diese Weise in Python verhalten, kann der Wert in a
wandelbar oder nicht:
>>> a = [1, 2]
>>> b = [3, 4]
>>> t = a, b
>>> a = [5, 6]
>>> t
([1, 2], [3, 4])
Obwohl a
Punkte auf ein veränderbares Wert, eine Liste, dann bedeutet a, b
* ein neues Tupel mit dem ersten Element machen das Objekt zu sein, das in diesem Moment auf a
zeigt, und das zweite Element ist das Objekt, das in diesem Moment auf b
zeigt; und dann a = [5, 6]
bedeutet * erstellen Sie eine neue Liste ... und machen Sie jetzt a
zeigen Sie darauf. Die Variablen (Namen) in Python sind zwar keine "Boxen", aber sie sind eine Art Zeichen, die auf die Werte zeigen.
Teil des Konzepts der Tupel ist, dass Sie ihren Wert nicht ändern können. Wenn Sie den Wert eines Variablenindex ändern möchten, sollten Sie möglicherweise Listen verwenden. –
So funktioniert das. Das gleiche gilt für Listen: '[a, b]' gibt dir '[25, 50]' und hält keine Referenzen auf 'a' oder' b'. Das gleiche gilt für Variablen: Wenn Sie 'x = a' verwenden, dann wirkt sich' a = 75' nicht auf 'x' aus. – Blorgbeard
Siehe auch http://stackoverflow.com/questions/6158907/what-does-python-treat-as-reference-types – Blorgbeard