Zum Hauptinhalt springen

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

Mini-QuizWas speichert f = hallo ohne Klammern?

Funktionen als Werte! Als Nächstes: einfacher Dekorator.