Fermetures
Glissez pour afficher le menu
Fermetures vs. Fonctions imbriquées
Une fonction imbriquée est toute fonction définie à l'intérieur d'une autre fonction. Les fonctions imbriquées sont utiles pour organiser le code et limiter la portée des fonctions utilitaires. Cependant, toutes les fonctions imbriquées ne sont pas des fermetures.
Une fermeture est un type particulier de fonction imbriquée. Les fermetures sont des fonctions imbriquées qui « se souviennent » et peuvent accéder aux variables de la portée de leur fonction englobante, même après que la fonction externe a terminé son exécution. Cela signifie que les fermetures peuvent conserver un état entre plusieurs appels.
Points clés :
- Toutes les fermetures sont des fonctions imbriquées ;
- Toutes les fonctions imbriquées ne sont pas des fermetures ;
- Une fonction imbriquée devient une fermeture uniquement si elle utilise des variables de la portée de la fonction externe et que ces variables restent accessibles après le retour de la fonction externe.
Cette distinction est importante pour comprendre comment Python gère la portée des variables et comment utiliser les fermetures pour encapsuler à la fois l'état et le comportement.
12345678910def make_greeter(name): def greet(): return f"Hello, {name}!" return greet greeter = make_greeter("Alice") print(greeter()) another_greeter = make_greeter("Bob") print(another_greeter())
Lorsque vous appelez make_greeter("Alice"), Python crée une nouvelle fonction greet qui se souvient de la valeur de name comme étant « Alice ». Même si make_greeter a terminé son exécution, la fonction greet retournée a toujours accès à la variable name de sa portée d'origine. C'est pourquoi l'appel de greeter() affiche Hello, Alice!, et l'appel de another_greeter() affiche Hello, Bob!. Chaque fermeture conserve sa propre copie des variables dont elle a besoin.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion