Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Fermetures | Portée des variables, fonctions imbriquées et closures
Concepts de Programmation Fonctionnelle en Python

bookFermetures

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.

12345678910
def 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())
copy

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.

question mark

Qu'est-ce qui fait d'une fonction une closure ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 8

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 8
some-alt