Leçon 7 / 9 — Chapitre 7: Modules, portée et fermetures
Le mot-clé nonlocal
Comme global permet de modifier une variable globale depuis une fonction, nonlocal permet de modifier une variable de la fonction extérieure depuis une fonction imbriquée — utile notamment pour construire un compteur avec une closure.
def creer_compteur():
total = 0
def incrementer():
nonlocal total
total = total + 1
return total
return incrementer
compteur = creer_compteur()
print(compteur())
print(compteur())
print(compteur())
Ce code affiche 1, puis 2, puis 3. nonlocal total indique que total, à l'intérieur de incrementer, désigne la variable total de la fonction extérieure creer_compteur — sans ce mot-clé, total = total + 1 créerait une variable locale et lèverait une UnboundLocalError, exactement comme vu pour global.
Chaque appel à creer_compteur() crée un nouveau compteur indépendant, avec son propre total :
autre_compteur = creer_compteur()
print(autre_compteur())
Ce code affiche 1 : autre_compteur à son propre total, complètement séparé de celui de compteur créé plus haut, même si les deux viennent de la même fonction creer_compteur.
À vous de jouer : utilisez creer_compteur() pour créer deux compteurs indépendants, et vérifiez qu'incrémenter l'un ne change pas l'autre.
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