Call by Value & Call by Reference Python?
Entwickeln Sie ein Python-Programm, mit dem man herausfinden kann, ob ein Parameter mit dem
call-by-value-Mechanismus oder mit call-by-reference weitergegeben wird.Testen Sie dabei Parameter
von unterschiedlichen Datentypen: Integer, String, Listen.
kann mir einer bei dieser Aufgabe zur hand gehen ? ich weis nicht wie ich das als programm schreiben soll, dass dass programm herrausfinden soll ob etwas call by value oder call by reference ist plus beispiel... habe da zwa was gemacht aber das war ein schuss in den ofen und war falsch -.- :D
würde mich freuen wenn mir da einer weiter helfen kann
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