Funktionen mit Output#

Unsere selbstdefinierten Funktionen haben bisher keinen explizitigen Output. Sie zeigen zwar Strings in der Konsole an, damit kann man innerhalb eines richtigen Computerprogrammes aber nicht wirklich viel anfangen. Möchte man, dass eine Funktion einem auch etwas (ein Objekt) zurückgibt, womit man innerhalb des Programmes weiterarbeiten kann, nachdem man sie aufgerufen hat, dann müssen wir dies explizit in der Funktionsdefinition festlegen. Dies machen wir mit dem Schlüsselwort return. Das Schlüsselwort return platzieren wir (meist) am Ende der Funktion und schreiben dahinter das Objekt, das wir als Output ausgegeben haben wollen.

Im Folgenden definiere ich eine Funktion, die nichts anderes tut, als der funktionsinternen Variable x den Wert 10 zuzuweisen und dann mittels return zurückzugeben.

def useless_function():
    x = 10
    return x
useless_function()
10

Führt man die Funktion (in der Konsole) aus, dann sieht man, dass nun der Wert 10 zurückgegeben wird. Diesmal wird dieser aber nicht nur einfach mittels Funktion print() “dargestellt”, sondern tatsächlich zurückgegeben. Das heißt, man könnte diesen Wert nun nehmen und im Programm weiter verwenden. Z.B. könnte man den Wert nehmen und einer Variable zuordnen, wie ich es unten mache:

my_variable = useless_function()
my_variable
10

Im Folgenden ein schon etwas sinnvolleres Beispiel einer Funktion mit Output. Ich definiere unten eine Funktion namens random_list(), welche eine Liste mit 3 Zufallszahlen zwischen 0 und 10 ausgibt.

import random

def random_list():
    the_list = []
    for i in range(3):
        the_list.append(random.randint(0,10))
    return the_list

In der letzten Zeile der Funktionsdefinition weise ich an, dass die Liste the_list als Output ausgegeben werden soll. Unten führe ich die Funktion aus und weise die ausgegebene Liste direkt einer Variable zu:

my_random_list = random_list()
my_random_list
[3, 8, 3]

Übrigens muss hinter dem Schlüsselwort return nicht unbedingt eine Variable stehen, sondern wir können auch unmittelbar das Ergebnis einer Berechnung oder anderen Funktion zurückgeben. So wie hier:

def square_it(number):
    return number * number
squared_number = square_it(55)
squared_number
3025

Funktionen haben immer einen Output#

Genaugenommen gibt jede Funktion immer einen Output zurück - egal, ob wir return verwenden oder nicht. Wenn wir kein return in einer Funktion verwenden, dann gibt eine Funktion standardmäßig den Wert None zurück. Das demonstriere ich unten an der Funktion random_list() von oben, wobei ich die return-Zeile entfernt habe.

def random_list():
    the_list = []
    for i in range(3):
        the_list.append(random.randint(0,10))
my_random_list = random_list()
print(my_random_list)
None

Wenn wir keinen Output explizit definieren, dann ist der Output einer jeden Funktion gleich None. Das kann einem in den meisten Fällen eigentlich egal sein, ist aber durchaus hilfreich zu wissen, wenn im Programm plötzlich und auf unerklärliche Weise eine Variable mit dem Wert None auftaucht… Dann hat man vielleicht in einer Funktion das return vergessen. :)