Ich verstehe nicht, warum diese Funktionen andere Ergebnisse geben; Ich dachte, dass s+=
und s=s+
waren gleichwertig:Übergeben von Listen, um in Python zu funktionieren
def foo(s):
s += ['hi']
def foo2(s):
s = s + ['hi']
Aber die erste ändert die Liste s
und die zweite nicht. Könnte mir jemand helfen, dies zu klären?
http://stackoverflow.com/q/2347265/3001761 – jonrsharpe
* "Ich dachte, dass s + = und s = s + äquivalent waren" * sind sie manchmal (mit 'int's zum Beispiel) aber nicht immer. Normalerweise mutiert '+ =' bei veränderlichen Objekten das Objekt an Ort und Stelle, aber 'x = x + y' erzeugt ein neues Objekt mit' x + y' und weist es dann der Variablen 'x' zu. Gewöhnlich. Jede Klasse muss entscheiden, wie sie arbeiten will –
es ist nicht das Gleiche. Das erste ist wie 's.exends ([" hi "])' eine Sekunde ist wie 'b = s + [" hi "]; s = b' – furas