Les fermetures protègent vos valeurs
Vous continuez à aider votre nièce à comprendre les fermetures. Vous avez écrit la fonction get_new_func()
qui renvoie une fonction imbriquée. La fonction imbriquée call_func()
appelle la fonction qui a été transmise à get_new_func()
. Vous avez également écrit my_special_function()
qui imprime simplement un message indiquant que vous exécutez my_special_function()
.
Vous voulez montrer à votre nièce que, quoi que vous fassiez à my_special_function()
après l'avoir passé à get_new_func()
, la nouvelle fonction imite toujours le comportement de l'original my_special_function()
parce qu'elle se trouve dans la fermeture de la nouvelle fonction.
Cet exercice fait partie du cours
Écrire des fonctions en Python
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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()