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 l'attestation finale.
7 500 XOF / 11,43 € / 12,46 $
Débloquez les 92 leçons restantes de ce module
Pour vous communiquer où envoyer le paiement.
Moyen de paiement souhaité
Nous vous contactons pour le paiement — activé dès réception.