NSI · Première
Variables locales et globales
Découvrir la notion de portée (scope), la distinction entre variables locales et globales, l'instruction global et les effets de bord.
Variables locales et variables globales
Portée locale des variables
Lorsque l'on crée des variables à l'intérieur d'une fonction, celles-ci n'existent pas en dehors de celle-ci. C'est le concept de portée (*scope*).
Activité 23 : Variable locale inaccessible
Analysez et exécutez le programme suivant :
Après exécution, déterminez la valeur de i en le saisissant dans la console.
Conflit de noms : local vs global
Une variable globale (créée en dehors de toute fonction) et une variable locale (créée dans une fonction) peuvent porter le même nom sans s'écraser.
Activité 24 : Noms identiques
Exécutez ce programme :
Quelle est la valeur de i dans la console à la fin ?
Recherche de variable dans les espaces de nommage
Lorsqu'on utilise une variable dans une fonction, Python cherche son association de nom selon un ordre précis : il cherche d'abord dans l'espace local de la fonction. S'il ne la trouve pas, il va chercher dans l'espace global.
Activité 25 : Lecture d'une variable globale
Testez le programme suivant :
Activité 26 : Priorité locale
Observez et testez ce programme :
Ici, Python trouve immédiatement une variable locale i (de valeur 5). La recherche s'arrête là, le programme affiche 5. La variable globale i de valeur 3 reste inchangée.
Le problème de la modification directe
Activité 27 : Erreur de référence
Tentez d'exécuter ce script :
L'instruction global et les effets de bord
Pour pouvoir modifier une variable globale à l'intérieur d'une fonction, on doit utiliser l'instruction global :
Activité 28 : Utilisation du mot-clé global
Exécutez ce programme :
Vérifiez la valeur de i dans votre console après l'exécution.
Pourquoi l'utilisation de global est déconseillée ?
L'utilisation de global provoque ce que l'on appelle un effet de bord (la fonction modifie directement l'état global du programme).
En programmation professionnelle, les effets de bord sont considérés comme de mauvaises pratiques car :
- Ils rendent le programme difficile à lire et à comprendre.
- Ils compliquent le débogage (l'état futur des variables globales est difficile à prévoir).
- Ils risquent d'entraîner des comportements imprévus ou des bogues de collision de données.
> Remarque : Un paradigme complet de programmation (la programmation fonctionnelle) cherche à bannir au maximum ces effets de bord. Nous l'étudierons en classe de Terminale.
Avez-vous compris ce chapitre ?
Cochez-le pour l'enregistrer dans votre progression d'apprentissage.
