PaliSkill
Python intermédiaire

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