Wie der Operator = mit Listen in Python arbeitet
Der Operator = in Python zeigt unerwartetes Verhalten, wenn er auf Listen angewendet wird. Dieses Verhalten wird auf die Unterscheidung zwischen den speziellen Methoden iadd und add zurückgeführt.
iadd vs add
Verhalten bei Listen
Wenn = für eine Liste mit einer iadd-Methode verwendet wird, wird die Liste wird an Ort und Stelle geändert. Wenn iadd nicht definiert ist, wird add aufgerufen, was zu einer neuen Liste führt.
Beispiel
Bedenken Sie Folgendes Code:
class foo: bar = [] def __init__(self, x): self.bar += [x] class foo2: bar = [] def __init__(self, x): self.bar = self.bar + [x] f = foo(1) g = foo(2) print(f.bar) print(g.bar) f.bar += [3] print(f.bar) print(g.bar) f.bar = f.bar + [4] print(f.bar) print(g.bar) f = foo2(1) g = foo2(2) print(f.bar) print(g.bar)
Ausgabe
[1, 2] [1, 2] [1, 2, 3] [1, 2, 3] [1, 2, 3, 4] [1, 2, 3] [1] [2]
Erläuterung
Fazit
Das Verhalten von = auf Listen hängt davon ab, ob es aufruft iadd oder add__. Die direkte Änderung erfolgt mit __iadd__, während __add eine neue Liste erstellt.
Das obige ist der detaillierte Inhalt vonWie wirkt sich Pythons =-Operator je nach __iadd__ und __add__ unterschiedlich auf Listen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!