Eine Funktion ist ein benannter Codeblock, den du beliebig oft aufrufen kannst. Funktionen vermeiden Wiederholungen, gliedern Programme und machen sie testbar. Du hast schon eingebaute Funktionen wie print() und len() benutzt; jetzt schreibst du eigene.
Funktionen definieren und aufrufen
Eine Funktion beginnt mit def, dann Name, Klammern und Doppelpunkt. Der Block darunter ist eingerückt:
def begruessung():
print("Hallo!")
print("Schön, dass du da bist.")
begruessung()
begruessung()Hallo! Schön, dass du da bist. Hallo! Schön, dass du da bist.
Die Definition allein führt nichts aus. Erst der Aufruf begruessung() startet den Code.
Parameter
In den Klammern stehen Parameter, also Platzhalter für Werte, die beim Aufruf übergeben werden (Argumente):
def begruesse(name):
print(f"Hallo, {name}!")
begruesse("Mia")
begruesse("Tom")Hallo, Mia! Hallo, Tom!
Rückgabewerte mit return
Mit return gibt eine Funktion einen Wert an den Aufrufer zurück. Danach endet die Funktion sofort:
def quadrat(x):
return x * x
ergebnis = quadrat(7)
print(ergebnis)
print(quadrat(3) + quadrat(4))49 25
Eine Funktion ohne return liefert automatisch None. Der Unterschied zwischen Ausgeben und Zurückgeben ist wichtig: Mit print zeigst du etwas an, mit return kannst du das Ergebnis weiterverwenden.
def nur_print(x):
print(x * 2)
def mit_return(x):
return x * 2
a = nur_print(5) # gibt 10 aus, a ist None
b = mit_return(5) # gibt nichts aus, b ist 10
print(a, b)10 None 10
Mehrere Rückgabewerte
def statistik(zahlen):
return min(zahlen), max(zahlen), sum(zahlen) / len(zahlen)
kleinste, groesste, mittel = statistik([4, 8, 15, 16, 23, 42])
print(kleinste, groesste, round(mittel, 2))4 42 18.0
Entscheidungen in Funktionen
def ist_gerade(n):
return n % 2 == 0
def note_text(note):
if note == 1:
return "sehr gut"
if note == 2:
return "gut"
return "ausbaufähig"
print(ist_gerade(10), ist_gerade(7))
print(note_text(1), note_text(5))True False sehr gut ausbaufähig
Dokumentation mit Docstrings
Der erste Text in einer Funktion ist ihr Docstring. Er erklärt, was die Funktion tut, und wird von help() angezeigt:
def flaeche(laenge, breite):
"""Berechnet die Fläche eines Rechtecks."""
return laenge * breite
print(flaeche(3, 4))
print(flaeche.__doc__)12 Berechnet die Fläche eines Rechtecks.
Merke
def name(parameter):definiert,name(argument)ruft aufreturngibt einen Wert zurück und beendet die Funktion; ohnereturnkommtNone- Mehrere Rückgabewerte werden als Tupel geliefert
- Docstrings beschreiben die Funktion
- Funktionen vermeiden Wiederholung und machen Code lesbar
Aufgabe
Schreibe eine Funktion ist_primzahl(n), die True oder False zurückgibt, und teste sie mit den Zahlen 1 bis 20.