Call by Value & Call by Reference Python?

3 Antworten

Naja, der Witz an Call By Reference und Call By Value ist doch: Bei Call By Value wird im Prinzip der Wert an die Funktion übergeben, by Call By Reference eine Referenz auf den Wert, was zu folgendem Verhalten führt:

Das Ändern des Werts der Parametervariable bei Call By Value hat keine Auswirkung auf den aufrufenden Code, by Call By Value aber schon.

Was müsste man jetzt also machen? Eine Funktion, die einen Parameter von einem bestimmten Typ nimmt, den Wert des Parameters innerhalb der Funktion ändern und dann schauen, ob die Variable nach dem Aufruf der Funktion denselben Wert hat.

Beispiel in einer fiktiven Sprache:

int x = 5;
print(x);
meineFunktion(x);
print(x);

Wird jede bei beiden Ausgaben dasselbe ausgegeben, dann ist es Call By Value.

Das ist insofern eine etwas komische Aufgabe, weil Python kein Call-by-Value und Call-by-reference ansich kennt.

Python übergibt immer nur Referenzen (macht also ein Call by Reference). Aber abhängig davon, ob der Typ immutable ist, ändert sich das Verhalten bei Veränderung.

Deswegen muß man eben eigentlich erstmal verstehen, daß Python ansich keine Variablen kennt, sondern nur Namen.

Ich verstehe den Sinn der Aufgabe nicht... wenn ich die Funktion selbst schreibe kann ich doch selbr bestimmen ob der Aufruf per value oder per reference erfolgt, warum sollte ich dann eine zusätzliche Funktion schreiben die das für mich ermittelt? lol