Einige Sites sagen, dass der Operator "a + = b" derselbe ist wie "a = a + b", aber für veränderbare Objekte nicht genau der gleiche. Seien Sie vorsichtig, wenn Sie Variablen haben, die auf dasselbe Objekt verweisen. (Besonders für diejenigen, die NumPy verwenden!)
Kurz gesagt, es gibt die folgenden Unterschiede. Für veränderbare Objekte
a + = b
ändert sich das Objekt, auf das a
zeigt, vor und nach der Zuweisung nicht.a = a + b
ändert sich das Objekt, auf das``` zeigt, vor und nach der Zuweisung.Bei unveränderlichen Objekten ändert sich dies jedoch in beiden Fällen (der Kommentar von @ shiracamus enthält ein Beispiel).
Experimentieren wir, um "[1, 2, 3]" zu erstellen, indem wir "[3]" zu "[1, 2]" hinzufügen. "y" bezieht sich auf das Objekt von "x" vor der Zuweisung. Sie können die ID eines Objekts mit der integrierten Funktion "id (x)" abrufen.
a += b
>>> x = y = [1, 2] #y ist das gleiche Objekt wie x vor der Zuweisung
>>>
>>> id(x)
4397797440
>>> id(y)
4397797440
>>>
>>> x += [3]
>>>
>>> x
[1, 2, 3]
>>> y #Auch zu y hinzugefügt
[1, 2, 3]
>>>
>>> id(x) #Gleiches Objekt wie vor der Zuordnung
4397797440
>>> id(y)
4397797440
a = a + b
>>> x = y = [1, 2] #y ist das gleiche Objekt wie x vor der Zuweisung
>>>
>>> id(x)
4397797440
>>> id(y)
4397797440
>>>
>>> x = x + [3]
>>>
>>> x
[1, 2, 3]
>>> y #Nicht zu y hinzugefügt
[1, 2]
>>>
>>> id(x) #Zeigen auf ein anderes Objekt als vor der Zuweisung
4395937472
>>> id(y)
4397797440
Recommended Posts