2016-10-02 4 views
2

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?

+6

http://stackoverflow.com/q/2347265/3001761 – jonrsharpe

+1

* "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 –

+0

es ist nicht das Gleiche. Das erste ist wie 's.exends ([" hi "])' eine Sekunde ist wie 'b = s + [" hi "]; s = b' – furas

Antwort

-1

Verwenden list.append denn wenn man sagt, s = s + [ ‚hallo‘] dann S-Punkt nur auf ein anderes Objekt, aber wenn Sie verwenden .append() dann die gleiche Liste geändert wird

Verwandte Themen