Comprendre les variables globales, locales et non locales en Python
Comprendre les variables globales, locales et non locales en Python
Maîtrisez l'utilisation des variables globales, locales et non locales en Python, et sachez quand appliquer chacune pour un code propre et maintenable.
Vidéo : Variables locales et globales en Python
Variables globales
En Python, une variable déclarée en dehors de toute fonction — au niveau du module — est une variable globale. Elle peut être lue depuis n'importe où dans le module, mais doit être déclarée avec le mot-clé global si vous voulez la modifier à l'intérieur d'une fonction.
Exemple : création et lecture d'une variable globale
x = "global"
def foo():
print("x à l'intérieur :", x)
foo()
print("x à l'extérieur :", x)
Sortie
x à l'intérieur : global x à l'extérieur : global
Tenter de réassigner x sans la déclarer globale résulte en une UnboundLocalError :
x = "global"
def foo():
x = x * 2
print(x)
foo()
Sortie
UnboundLocalError: local variable 'x' referenced before assignment
Pour modifier une variable globale à l'intérieur d'une fonction, utilisez le mot-clé global :
x = "global"
def foo():
global x
x = x * 2
print(x)
foo()
Sortie
globalglobal
Variables locales
Une variable locale est définie dans le corps d'une fonction et n'existe que pendant l'exécution de cette fonction. Elle ne peut pas être accédée en dehors de la fonction.
Exemple : accès à une variable locale en dehors de sa portée
def foo():
y = "local"
foo()
print(y)
Sortie
NameError: name 'y' is not defined
Définition et utilisation correcte d'une variable locale :
def foo():
y = "local"
print(y)
foo()
Sortie
local
Combinaison de variables globales et locales
Il est courant d'utiliser les deux portées dans le même module. Le mot-clé global assure que une variable fait référence à l'instance au niveau du module.
x = "global "
def foo():
global x
y = "local"
x = x * 2
print(x)
print(y)
foo()
Sortie
global global local
Quand une variable locale partage un nom avec une globale, elles sont indépendantes :
x = 5
def foo():
x = 10
print("x local :", x)
foo()
print("x global :", x)
Sortie
x local : 10 x global : 5
Variables non locales
Les fonctions imbriquées peuvent accéder et modifier les variables de leur portée englobante (mais pas globale) en utilisant le mot-clé nonlocal.
def outer():
x = "local"
def inner():
nonlocal x
x = "nonlocal"
print("inner :", x)
inner()
print("outer :", x)
outer()
Sortie
inner : nonlocal outer : nonlocal
Note : La mise à jour d'une variable non locale à l'intérieur de la fonction interne met à jour la variable dans la portée de la fonction externe.
Python
- Variables, constantes et littéraux en C : Guide complet
- Mots-clés et identifiants Python : Maîtriser les mots réservés et les conventions de nommage
- Instructions, indentation et commentaires en Python : Guide clair
- Variables, constantes et littéraux en Python – Guide complet
- Maîtriser la conversion et le transtypage de types en Python : Guide complet
- Maîtriser les E/S et l'importation de modules en Python : Guide pratique
- Maîtriser le mot-clé global en Python : Comment et quand l'utiliser
- Maîtriser les nombres, la conversion de types et les mathématiques en Python
- Maîtriser les opérations sur les répertoires et fichiers en Python