Les fermetures assurent la sécurité de vos valeurs
Vous continuez à aider votre nièce à comprendre les fermetures. Vous avez créé 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 rédigé my_special_function(), qui affiche simplement un message indiquant que vous exécutez my_special_function().
Vous souhaitez démontrer à votre nièce que, quelles que soient les modifications apportées à my_special_function() après l'avoir transmis à get_new_func(), la nouvelle fonction continue d'imiter le comportement de la fonction d'origine my_special_function(), car elle se trouve dans la fermeture de la nouvelle fonction.
Cet exercice fait partie du cours
<cours>Écrire des fonctions en Python</cours>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()