IniziaInizia gratis

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

Visualizza il corso

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()
Modifica ed esegui il codice