Leçon 6 / 9 — Chapitre 7: Modules, portée et fermetures
Closures : une fonction qui se souvient de son contexte
Une fonction imbriquée (vue au deuxième chapitre de ce module) peut continuer à "se souvenir" des variables de la fonction extérieure, même après que celle-ci ait fini de s'exécuter. Ce mécanisme s'appelle une closure (fermeture).
def creer_multiplicateur(facteur):
def multiplier(nombre):
return nombre * facteur
return multiplier
doubler = creer_multiplicateur(2)
tripler = creer_multiplicateur(3)
print(doubler(5))
print(tripler(5))
Ce code affiche 10, puis 15. creer_multiplicateur(2) s'exécute et se termine, renvoyant la fonction multiplier — mais celle-ci continue à "se souvenir" de la valeur facteur = 2 avec laquelle elle a été créée, même si creer_multiplicateur à fini de s'exécuter depuis longtemps. tripler, créée avec facteur = 3, se souvient d'une valeur différente : chaque fonction retournée garde son propre contexte, indépendant des autres.
C'est différent d'une fonction imbriquée ordinaire (vue précédemment) : ici, la fonction interne est renvoyée par return, et non appelée immédiatement à l'intérieur de la fonction extérieure — c'est ce qui lui permet de continuer à exister, avec son contexte, après coup.
À vous de jouer : écrivez une fonction creer_addition(nombre) qui renvoie une fonction ajoutant toujours ce nombre, puis créez-en deux versions avec des valeurs différentes et testez-les.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 85 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès