Python verwendet Namen, um Objekte zu referenzieren. Wenn wir a = b
, a
und b
sagen, beziehen wir uns jetzt auf das gleiche Objekt, und wenn wir a
ändern, werden wir die gleiche Änderung in b
sehen. Zum Beispiel:Wann erstellt Python ein neues Objekt?
a = [1, 2, 3]
b = a
a.append(4)
print(b)
wird gedruckt [1, 2, 3, 4]
.
Einige Operationen erstellen jedoch neue Objekte. Zum Beispiel:
a = 1
b = a
a = a + 1
print(b)
wird 1
drucken. Offensichtlich erzeugt die Zeile a = a + 1
irgendwie ein neues Objekt mit einem Wert von a + 1
und bindet den Namen a
daran. Wie funktioniert das? Was ist der Mechanismus, der in diesem Fall ein neues Objekt erzeugt?
Diese Frage ist kein Duplikat von this one, da ich speziell frage, wie die Objekterstellung in diesem Fall passiert, während die andere Frage allgemeiner war, wenn Namen Objekte teilen.
Listen sind veränderbar (verwenden Sie 'copy' oder slicing mit' [:] ', um sie zu kopieren), ganze Zahlen sind unveränderlich (sie werden jedes Mal neu erstellt, wie Strings) –
Mögliche Duplikate von [Wie python weist Werte nach Zuweisungsoperator] (http://stackoverflow.com/questions/34521078/how-does-python-assign-values-after-assignment-operator) –
Technisch bin ich mir nicht sicher, dass 'a = a + 1' * erstellt * ein neues Objekt in diesem speziellen Fall, da Python ganze Zahlen im Bereich [-5, 256] zwischenspeichert. Ich denke eher, dass ein vorher erstelltes Integer-Objekt aus dem Cache einem 'a' zugewiesen wird. Mit anderen Worten, "a" zeigt jetzt auf ein anderes Objekt als "b", aber in dieser Anweisung wurde kein Objekt erstellt. Korrigiere mich, wenn ich falsch liege. – Tagc