Heim > Backend-Entwicklung > Python-Tutorial > Ist Python Pass-by-Value oder Pass-by-Reference und wie kann ich Pass-by-Reference-Verhalten erreichen?

Ist Python Pass-by-Value oder Pass-by-Reference und wie kann ich Pass-by-Reference-Verhalten erreichen?

Mary-Kate Olsen
Freigeben: 2024-12-26 05:05:11
Original
340 Leute haben es durchsucht

Is Python Pass-by-Value or Pass-by-Reference, and How Can I Achieve Pass-by-Reference Behavior?

Variablen per Referenz in Python übergeben

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.

Übergabe von Werten und Referenzen verstehen

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.

Veränderliche und unveränderliche Datentypen

  • Veränderliche Datentypen: Diese Datentypen können geändert werden an Ort und Stelle. Beispiele hierfür sind Listen, Wörterbücher und benutzerdefinierte Objekte. Das Ändern dieser Typen innerhalb einer Funktion spiegelt die Änderungen im ursprünglichen Objekt wider.
  • Unveränderliche Datentypen: Diese Datentypen können nicht direkt geändert werden. In diese Kategorie fallen Zeichenfolgen, Ganzzahlen und Tupel. Das Ändern dieser Typen hat keine Auswirkungen auf das ursprüngliche Objekt.

Beispiel mit veränderlichen Listen

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)
Nach dem Login kopieren

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.

Beispiel mit unveränderlichen Strings

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)
Nach dem Login kopieren

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.

Übergabe per Referenz in Python

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage