Les fermetures protègent vos valeurs
Vous aidez toujours votre nièce à comprendre les fermetures. Vous avez écrit la fonction get_new_func() qui retourne une fonction imbriquée. La fonction imbriquée call_func() appelle n'importe quelle fonction transmise à get_new_func(). Vous avez aussi écrit my_special_function() qui affiche simplement un message indiquant que vous exécutez my_special_function().
Vous voulez montrer à votre nièce que, peu importe ce que vous faites à my_special_function() après l'avoir transmise à get_new_func(), la nouvelle fonction imite toujours le comportement de la my_special_function() originale, car elle se trouve dans la fermeture de la nouvelle fonction.
Cette activité fait partie du cours
Écrire des fonctions en Python
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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()