Tagebuch-Eintrag #24
Funktion mit Rückgabewert
Immer wieder was neues. Jetzt habe ich Funktion mit Rückgabewert entdeckt. Und eigentlich wollte ich schon mit den Klassen fortfahren. Gehört es eigentlich noch zu den Grundlagen? 😉
Eigentlich ist es auch egal. Früher oder später muss ich mich mit dem Thema Funktion mit Rückgabewert auseinandersetzen.
Ich habe bisher kleine Funktionen zur Übungszwecken geschrieben wie z.B. der Lottozahlgenerator oder Mathe-Aufgabengenerator. Die alle eine Aufgabe (also Funktion) ausführen und fertig.
return – Rückgabewert in Python
Mit return – kann ein Rückgabewert von aus der Funktion heraus für das Hauptprogramm ausgegeben weiterverwendet werden. So habe ich das nach meinem Verständnis und dem bisherigen Wissenstand verstanden. Korrigiert mich gern, wenn ich hier falsch liegen sollte. Aber zunächst der Beispielcode.
Funktion ohne Rückgabewert
def summary(input_value):
total = input_value * 2
print("Resultat innerhalb der Funktion:", total)
summary(10) # Ausgabe des print-Befehls aus der Funktion.

Soweit, so normal. In diesem Fall kann ich das Ergebnis, also die Summe 20 nicht weiter im Hauptprogramm verwenden, weil die Ausgabe der komplette String aus dem print-Befehl in der Funktion ist. Die Lösung dafür ist nun der Rückgabewert mit return.
Funktion mit Rückgabewert
Der gleichen Funktion modifiziere ich mit dem return-Befehl und der Code dieser Funktion sieht nun so aus:
def summary_return(input_value):
total = input_value * 2
return total
result = summary_return(10)
Statt den print-Befehl in der Funktion zu schreiben, wird dieser durch den return total eingesetzt. Wichtig ist, dass nach return kein Zuweisungsoperator (=) wie bei Variablen eingefügt wird und sich noch innerhalb der Funktion befinden muss – also eingerückt sein muss. Direkt nach return folgt die Variable – in meinem Beispiel total für das Ergebnis.
Außerhalb der Funktion weise ich die Funktion (summary_return) mit dem Wert 10 der Variable result zu. Wenn ich diesen Code jetzt im Terminal starte, wird nicht ausgegeben. Weil noch kein print-Befehlt vorhanden ist.
Jetzt wird es durch den Rückgabewert return interessant. Ich kann es über print-Befehl ausgeben, z.B:
print("Ergebnis ausgeben:", result) # Ergebnis ausgeben

Jetzt kann man viele verschiedene Dinge mit dem Rückgabewert anstellen und individuell verwenden.
result_new = result + result + result
print(result_new)
if result < result_new:
print (result, "ist kleiner als", result_new)
elif result > result_new:
print (result, "ist größer als", result_new)
else:
print (result, "ist genau so groß wie", result_new)

Schlussfolgerung
Ich denke, ich habe das soweit verstanden, wozu der Rückgabewert da ist und was der große Unterschied ist.
Mit return kann das Ergebnis oder der Wert der Funktion im Hauptprogramm weiter verwendet und/oder verarbeitet werden.
Ohne return kann das Ergebnis nur so ausgegeben werden, wie es von der Funktion definiert wurde. Oder anders gesagt, das Ergebnis der Funktion, wird in einer Variable gespeichert.
Mehrere Rückgabewerte
Auch wenn ich bereits eine Schlussfolgerung für mich gezogen habe und ich nun verstehe was return macht, gibt es auch die Möglichkeit mehrere Rückgabewerte zu definieren.
Aber an dieser Stelle und für diese Tagebuch-Eintrag reicht das für mich. Vielleicht schaue ich mir dieses Theme später nochmal genauer an.
Dazu empfehle ich dieses Tutorial:
https://www.python-lernen.de/rueckgabewert-funktionen.htm