Le closure mantengono al sicuro i tuoi valori
Stai ancora aiutando tua nipote a capire le closure. Hai scritto la funzione get_new_func() che restituisce una funzione annidata. La funzione annidata call_func() chiama qualunque funzione sia stata passata a get_new_func(). Hai anche scritto my_special_function() che semplicemente stampa un messaggio che indica che stai eseguendo my_special_function().
Vuoi mostrare a tua nipote che, indipendentemente da ciò che fai a my_special_function() dopo averla passata a get_new_func(), la nuova funzione continua a imitare il comportamento dell'originale my_special_function() perché si trova nella closure della nuova funzione.
Questo esercizio fa parte del corso
Scrivere funzioni in Python
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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()