Variables locales et globales en Python : bien les utiliser

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce qu'une variable en Python

Une variable est un nom qui fait référence à un objet en mémoire. En Python, les variables n'ont pas de type fixe. Le type appartient à l'objet auquel la variable fait référence.

x = 42
x = "maintenant une chaîne"

Variables locales en Python

Définition des variables locales

Une variable locale est définie à l'intérieur d'une fonction et n'est accessible que dans cette fonction. Une fois la fonction terminée, la variable locale est supprimée de la mémoire.

def dire_bonjour():
    nom = "Python"  # variable locale
    print("Bonjour,", nom)

dire_bonjour()
# print(nom)  # Erreur : nom n'est pas défini

La variable nom n'existe qu'à l'intérieur de la fonction dire_bonjour et est inaccessible en dehors.

Avantages des variables locales

Les variables locales assurent l'isolation des données et empêchent les modifications indésirables depuis d'autres parties du programme. Elles libèrent automatiquement la mémoire après l'exécution de la fonction.

Variables globales en Python

Que sont les variables globales

Une variable globale est déclarée en dehors de toutes les fonctions et est accessible partout dans le fichier. Ces variables conservent leur valeur pendant toute la durée d'exécution du programme.

langage = "Python"  # variable globale

def afficher():
    print("Langage :", langage)

afficher()  # Langage : Python

Problèmes liés à la modification des variables globales

Si vous tentez de modifier une variable globale à l'intérieur d'une fonction, une erreur se produit :

compteur = 0

def incrementer():
    compteur += 1  # UnboundLocalError !

Python interprète compteur comme une variable locale à cause de l'opération d'affectation, mais elle n'a pas été définie localement.

Le mot-clé global

Utiliser global pour modifier les variables globales

Le mot-clé global permet de modifier les variables globales à l'intérieur des fonctions :

compte = 0

def incrementer():
    global compte
    compte += 1

incrementer()
print(compte)  # 1

Application de global dans les opérations mathématiques

total = 0

def ajouter(x):
    global total
    total += x

ajouter(10)
ajouter(20)
print(total)  # 30

Quand utiliser global

Le mot-clé global doit être utilisé avec précaution, car il peut compliquer le débogage et rendre le code moins lisible.

Portée des variables : la règle LEGB

Principe de recherche des variables

Python recherche les variables selon la règle LEGB dans l'ordre suivant :

  • L (Local) — à l'intérieur de la fonction actuelle
  • E (Enclosing) — dans les fonctions englobantes
  • G (Global) — au niveau du module
  • B (Built-in) — noms intégrés de Python

Exemple d'application de la règle LEGB

x = "global"

def externe():
    x = "englobant"
    
    def interne():
        x = "local"
        print(x)
    
    interne()

externe()  # local

Python trouve la variable x dans la portée locale et utilise sa valeur.

Le mot-clé nonlocal

Accès aux variables des fonctions imbriquées

Le mot-clé nonlocal est utilisé pour travailler avec des variables provenant d'une portée externe, mais non globale :

def externe():
    compteur = 0
    
    def interne():
        nonlocal compteur
        compteur += 1
        return compteur
    
    return interne

f = externe()
print(f())  # 1
print(f())  # 2

Différences entre global et nonlocal

Le mot-clé global agit sur les variables au niveau du module, tandis que nonlocal agit sur les variables des fonctions externes dans une même portée.

Blogs

Book Recommendations