Closures bewahren deine Werte auf
Du hilfst deiner Nichte weiterhin, Closures zu verstehen. Du hast die Funktion get_new_func() geschrieben, die eine verschachtelte Funktion zurückgibt. Die verschachtelte Funktion call_func() ruft die Funktion auf, die an get_new_func() übergeben wurde. Du hast außerdem my_special_function() geschrieben, die einfach eine Meldung ausgibt, dass du my_special_function() ausführst.
Du möchtest deiner Nichte zeigen, dass die neue Funktion das Verhalten der ursprünglichen my_special_function() beibehält, egal was du nach der Übergabe an get_new_func() mit my_special_function() machst, weil sie in der Closure der neuen Funktion enthalten ist.
Diese Übung ist Teil des Kurses
<Kurs>Funktionen in Python schreiben</Kurs>Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
def my_special_function():
print('You are running my_special_function()')
def get_new_func(func):
def call_func():
func()
return call_func
new_func = get_new_func(my_special_function)
# Redefine my_special_function() to just print "hello"
def my_special_function():
____
new_func()