CommencezCommencez gratuitement

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

Voir le 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()
Modifier et exécuter le code