• Home
  • |
  • Blog
  • |
  • Python Tutorial [20/24] – Python Funktionen mit Rückgabewert

Python Tutorial [20/24] – Python Funktionen mit Rückgabewert

Zuletzt aktualisiert: Juni 26, 2023

Im heutigen Beitrag dieser Tutorialreihe werden wir in Python Funktionen mit Rückgabewert kennenlernen.

Was du bisher wahrscheinlich noch nicht wusstest: In Python geben Funktionen immer einen Wert zurück! In den bisherigen Blogartikeln ist das nur unbewusst im Hintergrund geschehen. Was das aber genau bedeutet, wirst du in den folgenden Zeilen erfahren. Außerdem wirst du lernen, wie du diesen Rückgabewert sogar selbst festlegen kannst.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Inhaltsverzeichnis

1. Python Funktionen mit Rückgabewert

Häufig ist es der Fall, dass wir Funktionen definieren möchten, die eine bestimmte Aufgabe für uns übernehmen und uns das Ergebnis anschließend in unser Hauptprogramm zurückgeben. Der Hintergrund dafür ist, dass wir mit diesem Ergebnis im Hauptprogramm auf irgendeine Art und Weise weiterarbeiten können. Und genau das ermöglichen uns in Python Funktionen mit Rückgabewert.

Wie bereits eingangs erwähnt, besitzt jede Funktion solch einen Rückgabewert.

Das heißt: Immer, wenn wir eine Funktion aufrufen und diese vollständig abgearbeitet wurde, wird uns in das Hauptprogramm, von wo aus wir die Funktion aufgerufen haben, ein Wert zurückgegeben.

Bei unserer say_hello-Funktion, die wir bereits im vergangenen Blogbeitrag definiert haben, trifft dies ebenfalls zu. Da wir mit diesem Wert allerdings nicht weitergearbeitet haben, ist uns das nicht bewusst aufgefallen.

Beweisen lässt sich dies anhand unseres Beispiels aus dem letzten Artikel. Hierfür schreiben wir jetzt um den Funktionsaufruf noch zusätzlich eine print-Anweisung:

python funktionen mit rückgabewert beispiel

Führen wir das Programm nun aus, geschieht Folgendes:

Das Programm startet oben, erkennt die Definition der say_hello-Funktion und weiß so, dass diese fortan aufrufbar ist. Anschließend ruft es die print-Funktion auf. Hier stellt das Programm fest, dass es sich darin nicht um einen Wert handelt, den es direkt ausgeben soll, sondern um eine Funktion, die aufgerufen wird. Folglich arbeitet das Programm also zunächst den Funktionskörper der Funktion ab, was zu der Ausgabe „Hallo Susi Mustermann. Willkommen zurück!“, führt.

Sobald das Programm diese Funktion vollständig abgearbeitet hat, wird an der Stelle, an der die Funktion aufgerufen wurde, automatisch ein Rückgabewert zurückgegeben. Diesen Rückgabewert gibt das Programm nun durch die print-Funktion auf der Konsole aus. Auf der Abbildung können wir erkennen, dass uns das Programm nun den Wert „None“ ausgibt.

ausgabe none

2. Der Wert None

None steht kurz gesagt für „Nichts“ oder in anderen Worten für die Abwesenheit eines Wertes. Weil jede Funktion immer einen Rückgabewert zurückgibt, ist es sehr wichtig, dass dieser Wert existiert.

Da wir in unserer say_hello-Funktion kein Ergebnis durch den Funktionsaufruf erwarten, sondern innerhalb dieser lediglich entsprechende print-Funktionen ausführen lassen möchten, benötigen wir bei dieser auch keinen Rückgabewert.

Selbst die print-Funktion, die das Programm innerhalb des Funktionskörpers der Funktion say_hello aufruft, ist wiederum auch eine Funktion, die folglich auch einen Wert zurückgeben muss. Die print-Funktion gibt ebenfalls den Wert None zurück, da dieser für die Abwesenheit eines Wertes steht, aber dennoch einen gültigen Wert darstellt.

Überprüfen können wir dies, indem wir um die print-Funktion innerhalb des Funktionskörpers noch eine weitere print-Funktion schreiben. So können wir den Rückgabewert der print-Funktion direkt danach ebenfalls ausgeben:

weiteres beispiel für rückgabewert
Erneute Ausgabe des Programms

Die Ausgabe zeigt, dass das Programm auch an dieser Stelle None ausgibt. Wenn man das Ganze zum ersten Mal hört, mag es vermutlich etwas verwirrend klingen.

Merken solltest du dir aber einfach: None ist der Wert, den man verwendet, wenn man aktuell keinen sinnvollen anderen Wert benutzen kann.

3. Der Datentyp NoneType

Bauen wir nun einmal zusätzlich die type()-Funktion um den Funktionsaufruf und lassen uns somit den Datentyp des Wertes None ausgeben:

datentyp von none ermitteln
ausgabe des datentyps von none

An der Ausgabe erkennen wir nun, dass NoneType der Datentyp des Wertes None ist. Damit hast du auch wieder einen weiteren Vertreter aus der Reihe der Basisdatentypen kennengelernt, welcher äußerst simpel ist, da für diesen lediglich der Wert None existiert.

Immer, wenn wir also zwangsweise einen Wert benötigen, zum aktuellen Zeitpunkt allerdings keinen sinnvollen Wert haben, verwenden wir None. Da wir bei der bisher definierten Funktion gar keinen Rückgabewert benötigt haben, jede Funktion jedoch immer einen Wert zurückgeben muss, gibt Python automatisch den Wert None zurück.

4. Das Schlüsselwort return

Bisher war es also so, dass uns unbewusst von der Funktion say_hello immer ein Rückgabewert geliefert wurde. Möchten wir uns nun bewusst einen Wert zurückgeben lassen, um damit weiterarbeiten zu können, verwenden wir das Schlüsselwort return.

Sobald wir return innerhalb eines Funktionskörpers aufrufen, beendet das Programm die Funktion unmittelbar und gibt den nach return folgenden Wert zurück.

Sehen wir uns das Ganze nun anhand eines neuen Beispiels an. Für dieses schreiben wir eine Funktion, der wir insgesamt zwei Zahlen übergeben möchten. Diese soll anschließend das Maximum ermitteln, also die größere der beiden Zahlen bestimmen. Die größere Zahl soll uns die Funktion dann zurückgeben. Das funktioniert folgendermaßen:

Wir beginnen für die Definition mit dem Schlüsselwort def, geben dieser für unser Beispiel als Bezeichner den Namen „maximum“ und legen direkt zwei Parameter namens a und b an:

python funktionen mit rückgabewert beispiel 2

Im Funktionskörper implementieren wir nun noch die Logik, sodass uns das Programm das Maximum zurückgibt.

Das setzten wir mit einer if-Anweisung um, damit wir die Werte miteinander vergleichen können. Wenn a kleiner ist als b, wissen wir, dass es sich bei b um den größeren Wert handelt und wir diesen somit zurückgeben können. Dafür schreiben wir eingerückt unter das if, „return b“.

Sollte hingegen a nicht kleiner als b sein, die Bedingung also zu False ausgewertet werden, soll das Programm den else-Block ausführen. In diesem Fall ist logischerweise a größer als b oder gleich b. Aus diesem Grund geben wir den Wert a zurück:

python funktionen mit rückgabewert beispiel 2 funktionskörper

Nun können wir unsere Funktion direkt testen.

Hierfür rufen wir sie auf und übergeben ihr beispielhaft die Werte drei und sieben. Nun sollte sie uns den größeren der beiden Werte zurückliefern, da wir die Funktion maximum genauso implementiert haben.

Dieser Wert kommt genau an der Stelle an, an der wir die Funktion aufgerufen haben. Das Ergebnis, das uns das Programm zurückliefert, speichern wir dann in einer Variable, um es sozusagen aufzufangen und damit im späteren Verlauf des Programms weiterarbeiten zu können.

Damit wir überprüfen können, ob die korrekte Zahl in der Variable gespeichert wird, lassen wir uns deren Inhalt dann auf der Konsole ausgeben:

erweiterung des beispiels

Beim Ausführen des Programms sehen wir, dass das Programm den Wert 7 korrekterweise als größeren Wert erkannt und zurückgegeben hat:

python funktionen mit rückgabewert beispiel 2 ausgabe

Selbst wenn wir die beiden Werte bei der Eingabe der Argumente vertauschen, gibt uns das Programm noch immer die 7 zurück, weil sich die Logik innerhalb der Funktion darum kümmert.

An dieser Stelle sind wir auch schon am Ende des heutigen Tutorials über die Python Funktionen mit Rückgabewert angelangt. Somit hast du gelernt, wie du mithilfe von Funktionen, Werte an der Stelle zurückgeben kannst, an der die Funktion zuvor aufgerufen wurde. Des Weiteren weißt du nun, dass auch wenn du mit return nicht selbst einen Wert zurückgibst, das Programm immer automatisch den Wert None zurückgibt.