Python lernen · Schritt 6 von 14
Im MUD: teiles_ok() zerlegt jeden deiner Befehle

Python lernen · 06.09.2026

Python lernen: Funktionen

Funktionen verpacken Anweisungen unter einem Namen — das Fundament jedes größeren Programms. Parameter, return, Docstrings, Übungen und Quiz.

Jedes Mal, wenn du denselben Code zweimal tippst, stirbt ein bisschen Lesbarkeit. Funktionen verpacken eine Aufgabe unter einem Namen — einmal schreiben, überall benutzen. In Falkenmoor stecken Hunderte davon; teiles_ok() zerlegt beispielsweise jeden Spielbefehl in Wörter.

Bausteine bauen

def begruesse(name):
    print(f"Sei gegrüßt, {name}!")

begruesse("Mirabel")
begruesse("Thorak")

def definiert die Funktion, der Name in Klammern ist der Parameter — ein Platzhalter, der beim Aufruf mit einem echten Wert (dem Argument) gefüllt wird. Beim Aufruf darf nichts fehlen: begruesse() ohne Namen endet in einem TypeError.

return: Werte zurückgeben

Der häufigste Anfänger-Stolperstein ist der Unterschied zwischen print (auf den Bildschirm malen) und return (das Ergebnis an den Aufrufer übergeben). Nur mit return kannst du weiterrechnen:

def schaden(staerke, waffenbonus=2):
    """Berechnet den Schaden eines Angriffs."""
    return staerke + waffenbonus

wurf = schaden(7)            # 9
kritisch = schaden(7, 6)     # 13 — zweiter Wert überschreibt den Default
print(wurf + kritisch)       # 22 — mit dem Ergebnis weiterrechnen!

Wichtige Details: Parameter mit Default müssen hinten stehen (def f(a, b=2, c) ist ein SyntaxError). Eine Funktion ohne return liefert still None. Und return beendet die Funktion sofort — Zeilen danach laufen nie.

Docstrings — Notizen für dein zukünftiges Ich

Der Text in den dreifachen Anführungszeichen direkt nach def ist der Docstring. Werkzeuge und Editoren zeigen ihn automatisch an; mit help(schaden) liest du ihn sogar im Playground aus.

Lokal bleibt lokal

def verdopple(x):
    ergebnis = x * 2     # existiert nur INNERHALB der Funktion
    return ergebnis

print(verdopple(21))     # 42
print(ergebnis)          # NameError — außen unbekannt!

Variablen, die in einer Funktion entstehen, leben und sterben mit ihrem Aufruf. Nach außen dringt nur, was per return herausgegeben wird — genau das hält Programme aufgeräumt.

So übst du das

  • Werkzeugkasten: Baue dir eine Datei mit Helfern — ist_gerade(n), flaeche(b, h), gold_in_silber(g) — und rufe sie im Playground auf.
  • Rückbau-Übung: Nimm eine deiner alten if-Ketten und verpacke sie in eine Funktion mit Parameter.
  • DRY-Jagd: Finde in deinem Code wiederholte Zeilen und ziehe sie in eine Funktion („Don't repeat yourself“).
  • Redeweise: Funktionsnamen enthalten Verben — berechne_…, ist_…, erzeuge_….

Übungen

Übung 1 — Gerade oder ungerade — als Funktion

Schreibe ist_gerade(n), das True oder False zurückgibt.

Musterlösung zeigen
def ist_gerade(n):
    return n % 2 == 0

print(ist_gerade(4))    # True
print(ist_gerade(7))    # False

Übung 2 — Flächenrechner

Schreibe flaeche(breite, hoehe) und gib die Fläche eines Rechtecks zurück. Erweitere um umfang(breite, hoehe).

Musterlösung zeigen
def flaeche(breite, hoehe):
    return breite * hoehe

def umfang(breite, hoehe):
    return 2 * (breite + hoehe)

print(flaeche(3, 4), umfang(3, 4))   # 12 14

Übung 3 — Gold in Silber

1 Gold sind 10 Silber. Schreibe als_text(betrag), das einen Silber-Betrag als Text wie 2 G 3 S zurückgibt — mit // und %.

Musterlösung zeigen
def als_text(betrag):        # betrag in Silber
    g, s = betrag // 10, betrag % 10
    return f"{g} G {s} S"

print(als_text(23))   # 2 G 3 S

Übung 4 — Begrüßung mit Fallback

Schreibe begruesse(name="Wanderer") — ohne Argument wird „Wanderer“ begrüßt.

Musterlösung zeigen
def begruesse(name="Wanderer"):
    return f"Sei gegrüßt, {name}!"

print(begruesse())          # Sei gegrüßt, Wanderer!
print(begruesse("Mirabel"))

Quiz — Teste dich

Erst überlegen, dann aufklappen — so trainiert es am meisten!

  1. Was gibt eine Funktion zurück, die kein return hat?
  2. Ist def f(a, b=2, c): erlaubt?
  3. In der Funktion steht ergebnis = x * 2. Kannst du danach außen print(ergebnis) aufrufen?
  4. Eine Funktion gibt Text per print aus, hat aber kein return. Was liefert x = funktion() in x?
  5. begruesse(name="Wanderer") — was passiert beim Aufruf begruesse()?
Quiz-Lösungen anzeigen
  1. None — implizit, ohne dass du es siehst.
  2. Nein — Parameter mit Default müssen hinten stehen: def f(a, c, b=2) wäre korrekt.
  3. Nein — NameError: Variablen in Funktionen sind lokal.
  4. None — der Text war nur gemalt; ohne return kommt nichts an.
  5. Der Default greift: „Wanderer“ wird begrüßt.

↩ Vorheriger Teil: Schleifen

Weiter geht's mit dem nächsten Teil: Listen

Mehr aus der Kategorie „Python lernen“

← Zurück zum Lehrpfad