Variable locale : Variable définie à l'intérieur d'une fonction et accessible uniquement dans cette fonction.
- Rechercher les variables définies à l'intérieur des fonctions
- Vérifier si elles sont déclarées avec global ou nonlocal
- Confirmer qu'elles ne sont pas accessibles en dehors de la fonction
- Comprendre leur durée de vie pendant l'exécution de la fonction
| Type de variable | Portée | Accessible dans |
|---|---|---|
| Locale | Fonction | À l'intérieur de la fonction |
| Paramètre | Fonction | À l'intérieur de la fonction |
| Compteur de boucle | Boucle | À l'intérieur de la boucle |
Les variables x, y et resultat sont définies dans la fonction
Elles sont accessibles à l'intérieur de la fonction où elles sont définies
Elles ne sont pas accessibles en dehors de la fonction
Variables x, y et resultat sont locales à la fonction fonction_locale()
• Portée limitée : Les variables locales ne sont accessibles que dans leur fonction
• Durée de vie : Elles existent seulement pendant l'exécution de la fonction
• Isolation : Elles sont isolées du reste du programme
Variable globale : Variable définie au niveau du module et accessible dans toutes les fonctions.
La variable compteur est définie au niveau du module
Les fonctions peuvent lire la variable globale sans mot-clé spécial
Pour modifier une variable globale, on doit utiliser le mot-clé global
Une variable locale peut masquer une variable globale du même nom
Variable globale accessible en lecture partout, modifiable avec le mot-clé global
• Lecture : Les variables globales sont accessibles en lecture dans toutes les fonctions
• Écriture : Pour modifier une variable globale, utiliser le mot-clé global
• Shadowing : Une variable locale masque la variable globale du même nom
Shadowing : Situation où une variable locale a le même nom qu'une variable dans une portée externe, la masquant temporairement.
Identifiez la variable globale, englobante et locale avec le même nom
Chaque fonction a sa propre version de message
Le mot-clé nonlocal permet de modifier la variable englobante
Shadowing correctement géré avec nonlocal pour accéder à la portée englobante
• Shadowing : Une variable locale masque une variable de portée externe
• nonlocal : Permet d'accéder à une variable de portée englobante
• global : Permet d'accéder à une variable de portée globale
Mot-clé global : Permet à une fonction de modifier une variable définie au niveau du module.
Utilisez global avant le nom de la variable dans la fonction
La variable globale est modifiée, pas une copie locale
Les modifications persistent après la fin de l'exécution de la fonction
Variable globale modifiée correctement avec le mot-clé global
• global : Nécessaire pour modifier une variable globale dans une fonction
• Lecture : Pas besoin de global pour lire une variable globale
• Listes/objets : Les modifications internes aux objets mutables affectent la variable globale
Portée imbriquée : Situation où une fonction est définie à l'intérieur d'une autre fonction, créant des portées englobantes.
Identifiez les différentes couches de portées: externe, intermédiaire, interne
La fonction interne peut accéder aux variables des portées externes
Le mot-clé nonlocal permet de modifier une variable de portée englobante
Accès correct aux différentes portées avec gestion appropriée de nonlocal
• LEGB : Règle de recherche des variables (Local, Englobante, Globale, Built-in)
• nonlocal : Permet de modifier une variable de portée englobante
• Accès : Une fonction interne peut lire les variables des portées externes
- Préférez les variables locales : Moins de risques de conflits
- Documentez les variables globales : Expliquez pourquoi elles sont nécessaires
- Utilisez des constantes globales : Pour les valeurs fixes
- Limitez l'imbrication : Trop de niveaux rend le code difficile à suivre
- Testez la portée : Vérifiez que vos variables se comportent comme prévu
- Les variables locales ne sont accessibles que dans leur fonction
- Les variables globales sont accessibles partout
- Le mot-clé global est nécessaire pour modifier une variable globale
- Le mot-clé nonlocal permet d'accéder à une variable de portée englobante
- Le shadowing masque temporairement une variable de portée externe