„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wann verwendet Python Call by Reference und Call by Object Reference?

Wann verwendet Python Call by Reference und Call by Object Reference?

Veröffentlicht am 08.11.2024
Durchsuche:798

When Does Python Use Call by Reference and Call by Object Reference?

Aufruf von Python-Funktionen per Referenz (Duplikat)

In vielen Programmiersprachen können Parameter als Wert oder als Referenz unter Verwendung bestimmter reservierter Wörter übergeben werden . Wenn in Python jedoch ein Parameter an eine Funktion übergeben wird, ändert er niemals den Wert der ursprünglichen Variablen in der aufrufenden Funktion.

Beispiel 1: Aufruf nach Wert

k = 2

def foo(n):
    n *= n
    return n

j = foo(k)
print(j)  # 4
print(k)  # 2

Hier bleibt der Wert von k nach dem Aufruf der foo-Funktion unverändert, da Python Argumente nach Wert übergibt.

Beispiel 2: Aufruf durch Global

Um die Variable in der aufrufenden Funktion zu ändern, kann das globale Schlüsselwort verwendet werden.

n = 0

def foo():
    global n
    n *= n
    return n

In diesem Fall ermöglicht das globale Schlüsselwort die Änderung von n innerhalb der foo-Funktion und sein Wert wird in der aufrufenden Funktion aktualisiert.

Übergabe durch Objektreferenz in Python

Python folgt jedoch nicht strikt Call-by-Value oder Call-by-Reference. Stattdessen wird ein Konzept namens „Übergabe durch Objektreferenz“ verwendet.

In Python beziehen sich Variablen auf Objekte, nicht auf die Objekte selbst. Wenn eine Variable an eine Funktion übergeben wird, übergibt sie daher einen Verweis auf das Objekt, nicht auf das Objekt selbst.

Zum Beispiel:

def append_one(li):
    li.append(1)

x = [0]
append_one(x)
print(x)  # [0, 1]

In diesem Code hängt die Funktion append_one 1 an die Liste x an. Da die Liste per Objektreferenz übergeben wird, werden alle an der Liste innerhalb der Funktion vorgenommenen Änderungen in der aufrufenden Funktion widergespiegelt.

Übergabe per Referenz vs. Übergabe per Objektreferenz

  • Übergabe als Referenz: Das Feld der ursprünglichen Variablen wird an die aufgerufene Funktion übergeben, sodass alle Änderungen am Inhalt der Variablen im Aufruf berücksichtigt werden können Funktion.
  • Übergabe durch Objektreferenz: Eine Referenz auf die Box des Originalobjekts wird an die aufgerufene Funktion übergeben. Änderungen am Objekt werden sowohl in der aufrufenden als auch in der aufgerufenen Funktion widergespiegelt, Änderungen an der Variablen selbst (dem Feld) jedoch nicht.

Zusammenfassend folgt Python der Übergabe durch Objektreferenz, auf die Variablen verweisen Objekte und nicht die Objekte selbst. Dadurch können Funktionen an sie übergebene Objekte ändern, Änderungen an den Variablenreferenzen selbst werden jedoch nicht an die aufrufende Funktion zurückgegeben.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729140861 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3