Closures skyddar dina värden
Du hjälper fortfarande din brorsdotter att förstå closures. Du har skrivit funktionen get_new_func() som returnerar en nästlad funktion. Den nästlade funktionen call_func() anropar den funktion som skickades till get_new_func(). Du har också skrivit my_special_function(), som helt enkelt skriver ut ett meddelande om att my_special_function() körs.
Du vill visa din brorsdotter att oavsett vad du gör med my_special_function() efter att du skickat den till get_new_func(), så efterliknar den nya funktionen alltid beteendet hos den ursprungliga my_special_function() – eftersom den finns i den nya funktionens closure.
Den här övningen är en del av kursen
Att skriva funktioner i Python
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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()