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 pratico interattivo
Prova a risolvere questo esercizio completando il 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()