Funktionen & Lambda
def begruessung(name, sprache="de"):
"""Begrüßt eine Person je nach Sprache."""
if sprache == "de":
return f"Hallo {name}!"
elif sprache == "en":
return f"Hello {name}!"
return f"Hi {name}!"
# Aufrufe
print(begruessung("Anna")) # Hallo Anna!
print(begruessung("Bob", sprache="en")) # Hello Bob!*args und **kwargs — variable Argumente
def summe(*zahlen): # *args = Tupel beliebiger Anzahl
return sum(zahlen)
print(summe(1, 2, 3, 4)) # 10
def info(**daten): # **kwargs = Dict
for k, v in daten.items():
print(f"{k}: {v}")
info(name="Anna", alter=28)Lambda — kurze Funktionen inline
# Statt def quadrat(x): return x*x quadrat = lambda x: x*x # Häufig in map, filter, sorted zahlen = [3, 1, 4, 1, 5, 9, 2, 6] sortiert = sorted(zahlen, key=lambda x: -x) # absteigend gerade = list(filter(lambda x: x % 2 == 0, zahlen))
Default-Args FalleNIE veränderliche Default-Werte!
def f(x=[]) ist gefährlich — die Liste wird zwischen Aufrufen geteilt. Stattdessen def f(x=None) und in der Funktion x = x or [].