Funktionen als Werte
Funktionen sind Objekte
def hallo():
print("Hallo")
f = hallo
f()
Als Argument
def zweimal(fn):
fn()
fn()
def hi():
print("hi")
zweimal(hi)
Rate mal!
Braucht man Klammern bei f = hallo?
Auflösung
Nein – ohne () speicherst du die Funktion selbst, nicht das Ergebnis.
Probiere es selbst
Experiment 1
Funktion in Variable.
Experiment 2
An andere Funktion übergeben.
Experiment 3
Liste von Funktionen nacheinander aufrufen.
Übungen
Level 1
f = print (vorsichtig) – oder eigene fn.
Level 2
apply(fn, x) ruft fn(x) auf.
Level 3
Wähle fn anhand String ("add"/"mul").
Level-2-Lösung
def apply(fn, x):
return fn(x)
def doppelt(n):
return n * 2
print(apply(doppelt, 5))
Mini-Quiz
Funktionen als Werte! Als Nächstes: einfacher Dekorator.