PaliSkill
Python intermédiaire

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