Exercices Architecture & Patterns Portee locale vs globale
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Portee locale vs globale

En Python, quand tu assignes une valeur a une variable dans une fonction, Python considere cette variable comme locale a la fonction. Ca veut dire que si une variable globale a le meme nom, la variable locale la masque.

compteur = 10

def incrementer():
compteur = compteur + 1 # UnboundLocalError !
return compteur

Python voit que compteur est assigne dans la fonction, donc il le traite comme local. Mais au moment de lire compteur + 1, la variable locale n'a pas encore de valeur.

Pour modifier une variable globale dans une fonction, il faut utiliser le mot-cle global. Mais en general, on evite les variables globales. On prefere passer et retourner des valeurs.

Écris une fonction créer_compteur(depart) qui renvoie une fonction. Cette fonction renvoyee, quand on l'appelle, incremente le compteur de 1 et renvoie la nouvelle valeur. Utilise le mot-cle nonlocal pour que la fonction interne puisse modifier la variable de la fonction externe.

Exemple :
c = créer_compteur(0)
c() renvoie 1
c() renvoie 2
c() renvoie 3

Tests (3/4)

Premier appel
c = créer_compteur(0)
assert c() == 1
Appels successifs
c = créer_compteur(0)
c()
assert c() == 2
Depart different
c = créer_compteur(10)
assert c() == 11

+ 0 tests cachés

Indices (3 disponibles)

solution.py