verwenden "Warum sollte es zurückgeben ['yes']
"
Da Sie die Liste geändert, example
.
"obwohl ich die Variable 'example' nicht direkt ändere."
Aber Sie sind, Sie haben das Objekt mit der Variablen example
zur Funktion benannt. Die Funktion hat das Objekt mit der Methode append
des Objekts geändert.
Wie an anderer Stelle auf SO diskutiert, append
erstellt nichts neues. Es ändert ein Objekt an Ort und Stelle.
Siehe Why does list.append evaluate to false?, Python append() vs. + operator on lists, why do these give different results?, Python lists append return value.
und wie könnte ich den Code ändern, so dass "Beispiel" nicht durch die Funktion beeinflusst wird?
Was meinst du damit? Wenn Sie nicht möchten, dass example
von der Funktion aktualisiert wird, übergeben Sie sie nicht an die Funktion.
Wenn die Funktion eine neue Liste erstellen soll, dann schreiben Sie die Funktion, um eine neue Liste zu erstellen.
http://effbot.org/zone/default-values.htm beschreibt ein anderes, aber etwas verwandtes Problem. Das Lesen könnte Ihnen helfen zu verstehen, was vor sich geht. – MatrixFrog