Funktionen werden erst dann wirklich nützlich, wenn sie mit unterschiedlichen Eingabewerten arbeiten können. Anstatt für jede Situation eine neue Funktion zu schreiben, kannst du Parameter verwenden, um eine Funktion flexibel zu gestalten.
Parameter vs. Argumente
Diese beiden Begriffe werden oft verwechselt:
- Parameter ist der Name der Variable in der Funktionsdefinition.
- Argument ist der tatsächliche Wert, der beim Aufruf übergeben wird.
def begruesse(name): # 'name' ist der Parameter
print(f"Hallo, {name}!")
begruesse("Anna") # "Anna" ist das Argument
begruesse("Max") # "Max" ist das Argument
Mehrere Parameter
Eine Funktion kann mehrere Parameter haben, getrennt durch Kommas:
def addiere(a, b):
ergebnis = a + b
print(f"{a} + {b} = {ergebnis}")
addiere(3, 5) # 3 + 5 = 8
addiere(10, 7) # 10 + 7 = 17
Die Reihenfolge der Argumente ist wichtig! addiere(3, 5) gibt a=3 und b=5. Wenn du die Reihenfolge vertauschst, werden auch die Parameter in der falschen Reihenfolge belegt — das kann bei nicht-kommutativen Operationen (wie Subtraktion oder Division) zu falschen Ergebnissen führen.
Standardwerte für Parameter
Du kannst einem Parameter einen Standardwert geben, der verwendet wird, wenn kein Argument übergeben wird:
def potenziere(basis, exponent=2):
return basis ** exponent
print(potenziere(5)) # 25 (exponent ist standardmäßig 2)
print(potenziere(3, 3)) # 27 (exponent wird mit 3 überschrieben)
Platziere Parameter mit Standardwerten immer nach den Pflichtparametern. def f(a=1, b) ist in Python nicht erlaubt — Python weiß sonst nicht, welchem Parameter der übergebene Wert gehört.
Schlüsselwortargumente
Du kannst Argumente auch namentlich übergeben — dann spielt die Reihenfolge keine Rolle:
def beschreibe_person(name, alter, stadt):
print(f"{name} ist {alter} Jahre alt und lebt in {stadt}.")
beschreibe_person(alter=14, stadt="Berlin", name="Lisa")
# Lisa ist 14 Jahre alt und lebt in Berlin.
Praktisches Beispiel
def berechne_rabatt(preis, rabatt_prozent=10):
"""Berechnet den Preis nach Rabatt."""
rabatt = preis * (rabatt_prozent / 100)
endpreis = preis - rabatt
return endpreis
print(berechne_rabatt(50)) # 45.0 (10 % Standard)
print(berechne_rabatt(80, 25)) # 60.0 (25 % Rabatt)
print(berechne_rabatt(preis=100, rabatt_prozent=15)) # 85.0
Verwende keine veränderbaren Objekte (wie Listen) als Standardparameter. def f(liste=[]) kann zu unerwarteten Fehlern führen, weil die Liste zwischen allen Funktionsaufrufen geteilt wird. Verwende stattdessen def f(liste=None) und erstelle die Liste innerhalb der Funktion.
Übungsaufgaben
Was ist der Unterschied zwischen einem Parameter und einem Argument? Gib ein Beispiel.
Antwort anzeigen
Was gibt der folgende Code aus? def f(x, y=5): print(x + y) / f(3) / f(3, 10)