Closure ou fermeture
La mise en oeuvre de cette technique nous oblige à étudier la portée des variables en python à travers les scopes.
Notions de scope
En python, il existe 2 scopes:
- global, créé au lancement de l'interpreteur Python et qui existe le temps de l'exécution de l'interpréteur Python
- local, nouvellement créé à chaque appel de fonction, et qui existe le temps de l'exécution de la fonction
Le scope global est accessible, depuis n'importe quelle partie du programme, via la fonction interne globals()
Le scope local est disponible depuis la fonction en cours d'exécution via la fonction interne locals(). Il contient à la fois les paramètres de la fonction, les variables et fonctions locales, les classes, tout ce qui a été défini dans la fonction
Quand une variable ou une fonction n'est pas definie dans le scope local, on recherche au niveau du scope local appelant.