Beim Schreiben einer Klasse zum Testen ist Ihnen aufgefallen, dass Parameter in Python scheinbar per Wert und nicht per Referenz übergeben werden. Dieser Artikel wird klären, ob Ihre Annahme richtig ist, und Sie bei der Implementierung von Pass-by-Reference in Python unterstützen.
In Python werden Argumente per Referenz übergeben , was bedeutet, dass eine Referenz auf das Objekt an die Funktion übergeben wird. Diese Referenz wird jedoch als Wert übergeben. Dieses Verhalten entsteht durch die Unterscheidung zwischen veränderlichen und unveränderlichen Datentypen.
Betrachten Sie das folgende Beispiel:
def try_to_change_list_contents(the_list): the_list.append('four') outer_list = ['one', 'two', 'three'] try_to_change_list_contents(outer_list) print(outer_list)
Da Listen veränderbar sind, ist die Der Parameter „_list“ ist ein Verweis auf das Objekt „outer_list“. Durch Anhängen von „four“ an the_list wird auch die äußere_Liste geändert.
Betrachten Sie im Gegensatz dazu dieses Beispiel mit Strings:
def try_to_change_string(my_string): my_string = 'Changed' outer_string = 'Original' try_to_change_string(outer_string) print(outer_string)
Trotz Änderung die Variable my_string innerhalb der Funktion, der äußere_String bleibt unverändert. Dies liegt daran, dass Zeichenfolgen unveränderlich sind und nicht an Ort und Stelle geändert werden können.
Um die Übergabe per Referenz nachzuahmen, bei der die ursprüngliche Variable geändert wird, gibt es einige Optionen :
1. Einen neuen Wert zurückgeben: Die Funktion kann einen neuen Wert zurückgeben, der der ursprünglichen Variablen außerhalb der Funktion zugewiesen werden kann.
2. Ändern des Objektattributs: Wenn die Variable ein Objekt ist, kann die Funktion eines ihrer Attribute ändern, was sich im Originalobjekt widerspiegelt.
3. Verwenden von Listen oder Wrappern: Sie können die Variable in eine Liste einschließen und die Liste an die Funktion übergeben. Das Ändern der Liste wirkt sich auf die ursprüngliche Variable aus.
Durch das Verständnis der Wertübergabe- und Referenzmechanismen können Sie Variablen in Python effektiv nach Bedarf ändern.
Das obige ist der detaillierte Inhalt vonIst Python Pass-by-Value oder Pass-by-Reference und wie kann ich Pass-by-Reference-Verhalten erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!