Python · Klasse 10 · Block 3 von 4

Funktionen verstehen

Code, den man dreimal fast identisch schreibt, ist ein Signal. Funktionen sind die Antwort darauf — heute lernst du, wie man sie definiert, aufruft und mit Werten versorgt.

Alle Codebeispiele laufen direkt im Browser. Mit 📋 Kopieren kannst du den Code in Thonny einfügen und dort ausführen.

Thema 01

Das Problem vor der Lösung

Stell dir vor, du willst für drei Personen jeweils eine Begrüßung mit einer Berechnung ihres Alters in Tagen ausgeben.

Ohne Funktion
🔎Was fällt auf? Die Zeilen tage = jahre * 365 und print(...) stehen praktisch identisch dreimal da — nur die Werte ändern sich. Was müsstest du ändern, wenn sich herausstellt, dass ein Jahr eigentlich 365.25 Tage hat?
Immer der gleiche Code, nur mit anderen Werten — genau dieses Problem lösen Funktionen.

Die Idee dahinter

Statt den Rechenweg jedes Mal neu aufzuschreiben, schreibst du ihn einmal auf und rufst ihn beliebig oft auf. Genau das lernst du in diesem Block.

Thema 02

Die Funktion — Bauteile

Eine Funktion besteht aus festen Bestandteilen. Schau dir das kleinstmögliche Beispiel an.

Anatomie einer Funktion

def — Schlüsselwort, leitet die Definition ein. Ab hier merkt sich Python: „Hier kommt eine Anleitung, aber noch keine Ausführung."

begruessung — der Funktionsname, frei wählbar wie ein Variablenname.

() — die Klammern, hier stehen später die Parameter. Aktuell noch leer.

Rumpf — alles, was eingerückt unter der ersten Zeile steht: der Code, der bei Aufruf ausgeführt wird.

❌ Häufiger Denkfehler

def-Block ausführen = Funktion läuft

def allein führt noch nichts aus. Python liest die Anleitung nur und merkt sie sich.

✅ Richtig

Erst der Aufruf startet den Rumpf

Erst begruessung() — mit Klammern, ohne def — startet den Code im Rumpf.

Fertiges Beispiel — Funktion ohne Parameter
Leicht
Schreibe eine Funktion namens info, die (ohne Parameter) die zwei Zeilen Python Klasse 10 und Block 3 ausgibt (je eine eigene print-Zeile). Rufe die Funktion anschließend zweimal auf.
def info():
    print("Python Klasse 10")
    print("Block 3")

info()
info()
Thema 03

Mit Parametern füttern

Ohne Parameter macht die Funktion immer dasselbe. Mit einem Parameter in der Klammer kann sie bei jedem Aufruf mit einem anderen Wert arbeiten.

Parameter
In der Definition
def begruessung(name):
Argument
Beim Aufruf
begruessung("Lena")
Fertiges Beispiel — Funktion mit Parameter
Vergleiche das mit Thema 01: Der Rumpf steht nur noch einmal da, egal wie viele Namen begrüßt werden sollen.
Mittel
Schreibe eine Funktion tage_seit_geburt(jahre) mit einem Parameter jahre, die jahre * 365 ausgibt. Rufe sie für 14 Jahre auf und speichere das Ergebnis der Ausgabe zusätzlich in einer Variable tage_14 (also: tage_14 = jahre * 365 innerhalb der Funktion, bevor du ausgibst — oder rufe die Funktion so an, dass am Ende tage_14 und tage_15 mit den richtigen Werten existieren).
def tage_seit_geburt(jahre):
    tage = jahre * 365
    print("Etwa", tage, "Tage alt.")
    return tage

tage_14 = tage_seit_geburt(14)
tage_15 = tage_seit_geburt(15)
💡Tipp: Am einfachsten geht das, wenn deine Funktion den berechneten Wert am Ende mit return tage zurückgibt — dazu kommt gleich Thema 04.
Thema 04

Der Rückgabewert

print() zeigt einen Wert nur an — danach ist er weg. Mit return gibt die Funktion einen Wert zurück, den du in einer Variable speichern und weiterverwenden kannst.

print() — nur anzeigen

print(ergebnis)

Schreibt den Wert in die Konsole. Der Wert ist danach nicht mehr im Programm verfügbar.

return — zurückgeben

return ergebnis

Übergibt den Wert an die Stelle, wo die Funktion aufgerufen wurde — dort kann er gespeichert werden.

Fertiges Beispiel — Parameter und Rückgabewert
💡Die letzte Zeile (ergebnis_tom - ergebnis_lena) wäre mit reinem print() in der Funktion nicht möglich gewesen — die Werte müssen als Rückgabewert vorliegen, um weiterverrechnet zu werden.
Mittel
Schreibe eine Funktion quadrat(zahl), die zahl * zahl per return zurückgibt (kein print in der Funktion!). Speichere das Ergebnis für zahl = 6 in einer Variable ergebnis und gib ergebnis anschließend mit print() aus.
def quadrat(zahl):
    return zahl * zahl

ergebnis = quadrat(6)
print(ergebnis)
Anspruchsvoll
Abschlussaufgabe: Schreibe eine Funktion notenpunkte(note), die für eine Schulnote (1 bis 6) per return die Punktzahl nach der Formel (6 - note) * 3 zurückgibt. Rufe die Funktion für die Note 2 auf, speichere das Ergebnis in einer Variable punkte und gib am Ende "Punkte:" gefolgt vom Wert von punkte aus.
def notenpunkte(note):
    return (6 - note) * 3

punkte = notenpunkte(2)
print("Punkte:", punkte)
Quiz

Teste dein Wissen

Sechs Fragen zu allem, was in diesem Block dran war.

Frage 1 / 6
Was passiert, wenn du nur den def-Block einer Funktion ausführst, ohne sie aufzurufen?
Frage 2 / 6
Wie nennt man den Wert, der beim Aufruf begruessung("Lena") übergeben wird?
Frage 3 / 6
Wie nennt man den Platzhalter name in def begruessung(name):?
Frage 4 / 6
Was ist der Unterschied zwischen print(x) und return x in einer Funktion?
Frage 5 / 6
Welches Problem lösen Funktionen vor allem?
Frage 6 / 6
Was liefert eine Funktion ohne return-Anweisung, wenn man ihr Ergebnis in einer Variable speichert?
0/6
Reflexion

Zum Nachdenken

„Wenn du einen Codeblock zum dritten Mal kopierst, ist das ein Zeichen — nicht dafür, schneller zu tippen, sondern eine Funktion zu schreiben."

Diskutiert in der Klasse: An welcher Stelle in euren Programmen aus Block 1 oder Block 2 hättet ihr rückblickend eine Funktion gebraucht? Was hätte sich dadurch verändert?