Inizia subitoInizia 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 corso

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