sciences numériques et technologie (seconde) · Chapitre 5 · Exercice de TD
Ce qu'une fonction ne voit pas
Les fonctions · Définir et appeler une fonction · niveau 3 (difficile)
Énoncé
Prédire l'affichage de ce programme, puis l'exécuter.
x = 10
def ajoute_cinq(x):
x = x + 5
return x
print(ajoute_cinq(x))
print(x)
Que se passe-t-il si l'on supprime le paramètre, en écrivant def ajoute_cinq(): puis return x + 5 ?
Corrigé
L'affichage est 15 puis 10.
Le x de la fonction est une variable locale : elle naît à l'appel, reçoit une copie de la valeur passée, vit le temps de la fonction, puis disparaît. Le x extérieur — dit global — n'est pas touché. Que les deux portent le même nom ne les relie en rien.
Sans paramètre, return x + 5 fonctionne aussi et renvoie 15 : faute de variable locale, Python va chercher le x global. Mais c'est une mauvaise pratique, pour deux raisons : la fonction devient inutilisable ailleurs, puisqu'elle exige qu'un x existe au dehors ; et son résultat dépend d'un état invisible dans sa signature, ce qui rend les erreurs très difficiles à localiser.
Une fonction doit recevoir par ses paramètres tout ce dont elle a besoin, et communiquer son résultat par return. C'est ce qui permet de la lire et de la tester isolément.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 14 autres exercices corrigés dans ce chapitre, et 23 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.