6.2 Funktionen mit Parameter und Rückgabe#
Vorgefertigte Funktionen haben wir schon mir Argument und Rückgabewert aufgerufen. In diesem Kapitel geht es darum, selbst eine Funktion zu implementieren, die Argumente entgegennimmt, diese verarbeitet und dann Rückgabewerte liefert.
Lernziele#
Lernziel
Sie können eine Funktion mit Parametern und Rückgabewerten selbst implementieren.
Definition von Funktionen mit Parametern#
Meistens haben Funktionen Argumente, um Eingaben entgegennehmen und verarbeiten zu können. Das Argument wird bei der Implementierung der Funktion mit einer Variablen eingeführt.
Die allgemeine Syntax zur Definition einer eigenen Funktion mit Parametern sieht wie folgt aus:
def meine_funktion(arg1, arg2, ..., argn):
anweisung01
anweisung02
...
Funktionen werden mit dem Schlüsselwort def
gefolgt vom Funktionsnamen und
einer Liste von Parametern in Klammern definiert. Die Code-Anweisungen der
Funktion werden eingerückt.
Als Beispiel betrachten wir erneut die Funktion, die Grüße ausrichtet. Doch jetzt erweitern wir die Funktion. Die modifizierte Variante soll konkret eine Person grüßen.
def gruesse_ausrichten_mit_parameter(name):
print(f'Ich grüße {name}!')
Der Aufruf einer Funktion ohne passende Argumente führt nun zu einer Fehlermeldung.
gruesse_ausrichten_mit_parameter()
Daher müssen wir die modifizierte Funktion nun wie folgt aufrufen:
gruesse_ausrichten_mit_parameter('Anna')
Ich grüße Anna!
Die Funktion gruesse_ausrichten_mit_parameter()
hat aber keinen Rückgabewert.
Das können wir wie folgt testen:
x = gruesse_ausrichten_mit_parameter('Alice')
type(x)
Ich grüße Alice!
NoneType
x
ist vom Typ NoneType
oder anders ausgedrückt, in der Variablen x
ist
kein Datentyp gepeichert.
Sind Funktionen ohne Rückgabewert sinnvoll? Ja, denn so können Python-Programme vereinfacht werden. Sollte in einem Programm ein Block von Anweisungen mehrmals ausgeführt werden, lohnt es sich, diesen in eine Funktion auszulagern, um diese einfach aufrufen zu können.
Mini-Übung
Schreiben Sie eine Funktion, die mit Turtle ein Rechteck zeichnet. Die beiden Seitenlängen des Rechtecks sollen als Argumente der Funktion übergeben werden. Testen Sie Ihre Funktion auch.
Lösung
import ColabTurtlePlus.Turtle as turtle
turtle.clearscreen()
def zeichne_rechteck(seite1, seite2):
rechteck = turtle.Turtle()
for i in range(2):
rechteck.forward(seite1)
rechteck.left(90)
rechteck.forward(seite2)
rechteck.left(90)
a = 100
b = 30
zeichne_rechteck(a,b)
Das folgende Video fasst Funktionen mit Argumenten in Python zusammen.
Funktionen mit Parametern und Rückgabewerten#
In der Regel jedoch haben Funktionen einen Rückgabewert. Die allgemeine Syntax zur Definition einer eigenen Funktion mit Parametern und Rückgabewert sieht wie folgt aus:
def meine_funktion(arg1, arg2, ..., argn):
anweisung01
anweisung02
...
return rueckgabewert1, rückgabewert2, ...
An der Definitionszeile ändert sich nichts. Zuerst wird das Schlüsselwort def
verwendet, dann folgt der Funktionsname und zuletzt werden die Parameter in
Klammern aufgelistet. Der Rückgabewert der Funktion wird dann durch das
Schlüsselwort return
im Inneren der Funktion, also im eingerückten Teil
definiert. Die Funktion kann einen oder mehrere Rückgabewerte zurückliefern. Bei
mehreren Rückgabewerten werden diese einfach durch Komma getrennt.
Schauen wir uns ein Beispiel an. Die folgende Funktion nimmt einen Parameter entgegen und gibt einen Rückgabewert zurück.
def berechne_quadratzahl(zahl):
return zahl * zahl
Jetzt können wir die Funktion ausprobieren.
for x in range(1,11):
y = berechne_quadratzahl(x)
print(f'{x} mal {x} ist {y}')
1 mal 1 ist 1
2 mal 2 ist 4
3 mal 3 ist 9
4 mal 4 ist 16
5 mal 5 ist 25
6 mal 6 ist 36
7 mal 7 ist 49
8 mal 8 ist 64
9 mal 9 ist 81
10 mal 10 ist 100
Als nächstes kommt ein Beispiel mit zwei Rückgabewerten. Nicht nur die Quadratzahl, sondern auch die Kubikzahl soll berechnet werden.
def berechne_quadrat_kubik(zahl):
quadrat = zahl**2
kubik = zahl**3
return quadrat, kubik
Und erneut testen wir die Funktion.
for x in range(1,6):
x_hoch_2, x_hoch_3 = berechne_quadrat_kubik(x)
print(f'x = {x}, x^2 = {x_hoch_2}, x^3 = {x_hoch_3}')
x = 1, x^2 = 1, x^3 = 1
x = 2, x^2 = 4, x^3 = 8
x = 3, x^2 = 9, x^3 = 27
x = 4, x^2 = 16, x^3 = 64
x = 5, x^2 = 25, x^3 = 125
Mini-Übung
Schreiben Sie ein Programm, das mit Turtle ein Rechteck zeichnet, wobei die beiden Seitenlängen als Argumente der Funktion übergeben werden. Die Funktion soll den Umfang des Rechtecks und den Flächeninhalt zurückgeben. Lassen Sie anschließend Umfang und Flächeninhalt ausgeben.
Lösung
import ColabTurtlePlus.Turtle as turtle
turtle.clearscreen()
def zeichne_rechteck(seite1, seite2):
# Zeichnung des Rechecks
rechteck = turtle.Turtle()
for i in range(2):
rechteck.forward(seite1)
rechteck.left(90)
rechteck.forward(seite2)
rechteck.left(90)
# Berechnung Umfang und Flächeninhalt
umfang = 2 * seite1 + 2 * seite2
flaeche = seite1 * seite2
# Rückgabe
return umfang, flaeche
# Test der Funktion
a = 100
b = 30
U,A = zeichne_rechteck(a,b)
print(f'Der Umfang ist {U:.2f} Längeneinheiten, der Flächeninhalt des Rechtecks ist {A:.2f} Flächeneinheiten.')
Auch zu dem Thema Funktionen mit Rückgabe gibt es ein Video.