Kodokon kodokon.com

Funktionen: def, Parameter, return und Gültigkeitsbereich

Strukturiere deinen Code in wiederverwendbare Funktionen, meistere Standardwerte und verstehe den Gültigkeitsbereich von Variablen.

10 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Du weißt bereits, wie man Schleifen und Bedingungen schreibt; jetzt ist es Zeit, deinen Code zu strukturieren. Eine Funktion kapselt eine bestimmte Aufgabe hinter einem klaren Namen: Du schreibst sie einmal, du testest sie einmal, du rufst sie überall auf. def deklariert die Funktion, die Parameter nehmen die Eingabewerte entgegen und return gibt das Ergebnis an den Aufrufer zurück. Merke dir eine oft übersehene Sache: Eine Funktion ohne return gibt None zurück.

PYTHON
def net_price(price, tax_rate):
    total = price * (1 + tax_rate)
    return round(total, 2)

result = net_price(100, 0.2)
print(result)  # 120.0
Die Funktion nimmt zwei Parameter entgegen und gibt mit return einen Wert zurück.

Standardwerte machen eine Funktion flexibel, ohne die Varianten zu vervielfachen: Deklariere sie nach den erforderlichen Parametern. Beim Aufruf dokumentieren benannte Argumente (currency="USD") deine Absicht. In professionellem Code nutzt du sie, sobald eine Funktion mehr als zwei Parameter hat: Der Aufruf ist klar lesbar, ohne dass man die Definition öffnen muss.

PYTHON
def format_price(amount, currency="EUR", digits=2):
    return f"{amount:.{digits}f} {currency}"

print(format_price(19.9))                  # 19.90 EUR
print(format_price(19.9, currency="USD"))  # 19.90 USD
print(format_price(19.9, digits=0))        # 20 EUR
Mit benannten Argumenten gibst du nur an, was sich ändert.
PYTHON
def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

print(add_item("pen"))   # ['pen']
print(add_item("book"))  # ['book']
Mit dem None-Muster startet jeder Aufruf von einer frischen Liste.

Der Gültigkeitsbereich bestimmt, wo eine Variable existiert. Eine innerhalb einer Funktion erstellte Variable ist lokal: Sie verschwindet, wenn der Aufruf endet. Eine Funktion kann eine globale Variable lesen, aber jede Zuweisung erzeugt eine neue lokale Variable - die globale bleibt unberührt. Gute Gewohnheit: Statt globale Variablen zu verändern, übergib Parameter und gib Ergebnisse zurück; dein Code wird vorhersehbar und testbar.

PYTHON
rate = 0.2

def apply_tax(price):
    return round(price * (1 + rate), 2)

def set_rate(new_rate):
    rate = new_rate  # local variable, no effect

print(apply_tax(100))  # 120.0
set_rate(0.1)
print(apply_tax(100))  # 120.0, the global is untouched
Eine globale Variable zu lesen funktioniert; ihr etwas zuzuweisen erzeugt eine lokale.

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Was gibt eine Python-Funktion ohne return-Anweisung zurück?
    • 0
    • None
    • Eine leere Zeichenkette
    • Es wird ein Fehler geworfen
  2. Warum solltest du def add_item(item, items=[]) vermeiden?
    • Die Standardliste wird einmal erstellt und über alle Aufrufe hinweg geteilt
    • Eine Liste kann nicht als Standardwert verwendet werden
    • Es wird bei der Definition ein SyntaxError geworfen
  3. Was passiert, wenn du innerhalb einer Funktion einer Variablen etwas zuweist, während eine globale Variable gleichen Namens existiert?
    • Python verändert die globale Variable
    • Python erstellt eine lokale Variable, die globale bleibt unberührt
    • Python wirft einen Namenskonflikt-Fehler