Exercices Fonctions & Modules Première closure
🎉

Bravo!

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

Première closure

Une closure (fermeture en francais), c'est une fonction qui se souvient de l'environnement dans lequel elle a ete créée, meme apres que cet environnement a disparu.

Conretement, quand tu definis une fonction a l'interieur d'une autre fonction, la fonction interieure peut utiliser les variables de la fonction exterieure. Et elle continuera a y avoir acces meme apres que la fonction exterieure a fini de s'exécuter.

def compteur_depuis(debut):
compteur = debut
def incrementer():
nonlocal compteur
compteur += 1
return compteur
return incrementer

mon_compteur = compteur_depuis(10)
mon_compteur() # renvoie 11
mon_compteur() # renvoie 12

Le mot-cle nonlocal permet de modifier une variable de la fonction englobante. Sans lui, Python croirait que tu créés une nouvelle variable locale.

Écris une fonction créer_compteur(debut) qui renvoie une fonction. A chaque appel, cette fonction renvoyee incremente le compteur de 1 et renvoie la nouvelle valeur.

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
Debut different
c = créer_compteur(10)
assert c() == 11

+ 0 tests cachés

Indices (3 disponibles)

solution.py