Menu

Python-Funktionen: def, return, Default- und Keyword-Argumente

Wie du in Python Funktionen definierst und nutzt — Parameter, Rückgabewerte, Default-Argumente, Keyword-Argumente und Namensgewohnheiten, die Code lesbar halten.

Eine Funktion ist ein benannter Block von Schritten

Sobald du merkst, dass du dieselben paar Zeilen mehr als einmal schreibst — oder einem kleinen Stück Logik einen Namen geben willst —, bist du bereit, eine Funktion zu schreiben. Funktionen sind das erste echte Werkzeug, um Komplexität in einem Python-Programm zu beherrschen.

Die Grundform:

main.py
Output
Click Run to see the output here.

Zerlegt:

  • def ist das Schlüsselwort, das eine Funktionsdefinition einleitet.
  • greet ist der Funktionsname.
  • (name) ist die Parameterliste — die Eingaben, die die Funktion nimmt.
  • Der Doppelpunkt beendet den Kopf; der eingerückte Block darunter ist der Rumpf.
  • greet("Ada") ist ein Aufruf. Python führt den Rumpf mit name gebunden an "Ada" aus.

Funktionen bleiben schlafend, bis sie aufgerufen werden. Sie zu definieren führt sie nicht aus. Sie mit greet("Ada") aufzurufen tut es.

Parameter und Argumente

Das Wort Parameter steht für den Namen in der Funktionsdefinition. Das Wort Argument steht für den Wert, den du beim Aufruf übergibst. Im Alltag kein großes Ding, aber die Unterscheidung hilft beim Lesen von Fehlermeldungen.

main.py
Output
Click Run to see the output here.

Hier sind base und exponent Parameter. 2 und 10 sind Argumente. Python bindet sie der Reihe nach: erstes Argument an ersten Parameter und so weiter.

return: einen Wert zurückgeben

print schreibt auf den Bildschirm. return reicht einen Wert an den Aufrufer, damit der ihn nutzen kann:

main.py
Output
Click Run to see the output here.

Ohne return liefert eine Funktion standardmäßig None:

main.py
Output
Click Run to see the output here.

return verlässt die Funktion auch sofort. Häufig siehst du frühe Rückgaben, um Sonderfälle vor der Hauptlogik abzuhaken:

main.py
Output
Click Run to see the output here.

Frühe Rückgaben verhindern, dass der Hauptkörper tief in if/else verschachtelt ist.

Default-Argumente

Ein Parameter kann einen Default-Wert haben, der genutzt wird, wenn der Aufrufer keinen liefert:

main.py
Output
Click Run to see the output here.

Alle Parameter mit Default müssen nach den Parametern ohne Default stehen. def f(a, b=1, c): ist ein Syntaxfehler.

Die Falle veränderbarer Defaults

Das ist Pythons berühmteste Falle. Sieh:

main.py
Output
Click Run to see the output here.

Du erwartest, dass jeder Aufruf mit einer leeren Liste startet. Stattdessen wird die Default-Liste über die Aufrufe hinweg geteilt, und die Elemente sammeln sich. Python wertet den Default einmal aus, bei der Funktionsdefinition, und nutzt für immer dieselbe Liste.

Das sichere Muster: None als Default und die Liste innerhalb der Funktion erzeugen:

main.py
Output
Click Run to see the output here.

Jetzt bekommt jeder Aufruf, der items nicht übergibt, eine frische Liste. Diese Regel gilt für Listen, Dicts, Sets — alles Veränderbare.

Keyword-Argumente

Du kannst Argumente per Name statt per Position übergeben. Das erlaubt dir, mittlere Parameter zu überspringen und lange Aufrufe lesbarer zu machen:

main.py
Output
Click Run to see the output here.

Positionelle und Keyword-Argumente lassen sich mischen, aber positionelle müssen zuerst kommen:

main.py
Output
Click Run to see the output here.

Sobald eine Funktion mehr als drei oder vier Parameter hat, machen Keyword-Argumente den Aufruf deutlich leichter lesbar.

Positionsgebundene und Keyword-gebundene Parameter

Python erlaubt dir, manche Parameter als nur per Position aufrufbar (mit /) oder nur per Schlüsselwort (mit *) zu markieren:

main.py
Output
Click Run to see the output here.

Am ersten Tag brauchst du das nicht. Es wird nützlich, wenn du APIs entwirfst und festlegen willst, wie Aufrufer deine Funktion nutzen.

Docstrings und Benennung

Die erste Zeile innerhalb einer Funktion kann ein Docstring sein — ein dreifach zitierter String, den Python als Dokumentation behandelt:

main.py
Output
Click Run to see the output here.

Werkzeuge wie help(), IDE-Tooltips und Dokumentationsgeneratoren lesen den Docstring automatisch. Ein Einzeiler ist viel besser als nichts.

Und bitte: denk über Benennung nach.

  • Funktionsnamen sollten Verben sein: fetch_profile, compute_total, is_valid.
  • Nutz lower_snake_case.
  • Boolean-zurückgebende Funktionen beginnen oft mit is_, has_ oder can_.

Ein guter Name macht die Aufrufstelle selbsterklärend, ganz ohne Kommentar.

Reine Funktionen sind leichter zu verstehen

Eine reine Funktion liefert dieselbe Ausgabe für dieselbe Eingabe und hat keine Nebenwirkungen — sie ändert keinen globalen Zustand, schreibt nichts auf stdout (außer zum Debuggen) und nicht in Dateien.

main.py
Output
Click Run to see the output here.

Beide haben ihre Berechtigung, aber in Code, den du wiederverwenden und testen willst, strebe so viele reine Funktionen wie möglich an.

Ein kleines funktionierendes Beispiel

Eine schnelle Funktion, die Defaults, Keyword-Argumente und return kombiniert:

main.py
Output
Click Run to see the output here.

Als Nächstes: flexible Argumentlisten

Manchmal weißt du nicht, mit wie vielen Argumenten eine Funktion aufgerufen wird — oder du willst ankommende Argumente an eine andere Funktion weiterreichen. Dafür gibt es *args und **kwargs. Das ist die nächste Seite.

Häufig gestellte Fragen

Wie definiere ich eine Funktion in Python?

Nutz das Schlüsselwort def, gefolgt vom Funktionsnamen, Klammern für die Parameter und einem Doppelpunkt. Der eingerückte Block darunter ist der Funktionsrumpf. Beispiel: def greet(name): print(f'Hi, {name}').

Was macht return in Python?

return gibt einen Wert an den Aufrufer zurück. Eine Funktion ohne explizites return liefert automatisch None. Sobald return läuft, verlässt die Funktion sofort — Code dahinter im selben Block wird übersprungen.

Was sind Default-Argumente in Python?

Default-Argumente geben einem Parameter einen voreingestellten Wert, der benutzt wird, wenn der Aufrufer keinen liefert. def greet(name='friend'): heißt: greet() ohne Argumente nutzt 'friend'. Nutze niemals veränderbare Defaults wie [] — siehe unten für das sichere Muster.

Lerne mit Coddy zu programmieren

LOS GEHT'S