Maîtriser le mot-clé global en Python : Comment et quand l'utiliser
Maîtriser le mot-clé global en Python : Comment et quand l'utiliser
Ce guide explique le mot-clé global de Python, ses règles, cas d'utilisation pratiques et bonnes pratiques pour gérer les variables globales à travers les modules.
Qu'est-ce que le mot-clé global ?
En Python, le mot-clé global vous permet de déclarer qu'une variable à l'intérieur d'une fonction fait référence à une variable de niveau module plutôt qu'à une nouvelle variable locale. C'est essentiel quand une fonction a besoin de lire ou modifier une variable qui existe en dehors de sa propre portée.
Règles pour utiliser global
- Les variables créées à l'intérieur d'une fonction sont locales par défaut.
- Les variables définies au niveau du module sont globales automatiquement ;
globalest inutile quand on les lit seulement. - Utilisez
globalà l'intérieur d'une fonction quand vous avez l'intention d'assigner à une variable de niveau module. - Placer
globalen dehors d'une fonction n'a aucun effet.
Utilisation pratique de global
Voici des exemples illustratifs qui démontrent à la fois les pièges et l'approche correcte.
Exemple 1 : Accès à une variable globale depuis l'intérieur d'une fonction
c = 1 # variable globale
def add():
print(c)
add()
Sortie :
1
Ici, c est lu avec succès car aucune assignation ne se produit dans add().
Exemple 2 : Tentative de modification d'une variable globale sans global
c = 1 # variable globale
def add():
c = c + 2 # tente de modifier c
print(c)
add()
Sortie :
UnboundLocalError: local variable 'c' referenced before assignment
L'erreur survient car Python traite c comme une nouvelle variable locale qui est référencée avant assignation.
Exemple 3 : Modification d'une variable globale en utilisant global
c = 0 # variable globale
def add():
global c
c = c + 2
print("Dans add() :", c)
add()
print("Dans main :", c)
Sortie :
Dans add() : 2 Dans main : 2
En déclarant global c, la fonction met à jour le c de niveau module, et le changement est visible en dehors de la fonction.
Partage de variables globales à travers les modules Python
Pour les applications plus grandes, il est courant de centraliser la configuration dans un module dédié, tel que config.py. D'autres modules peuvent importer et modifier ces valeurs, permettant un état cohérent à travers le programme.
Exemple 4 : Variables globales inter-modules
Créez config.py :
a = 0
b = "empty"
Créez update.py pour modifier les globales :
import config
config.a = 10
config.b = "alphabet"
Créez main.py pour vérifier les changements :
import config
import update
print(config.a)
print(config.b)
Sortie :
10 alphabet
Ce motif garde l'état partagé en un seul endroit tout en permettant des mises à jour contrôlées depuis d'autres modules.
Utilisation de global dans les fonctions imbriquées
Quand une fonction imbriquée a besoin de modifier une variable qui est locale à une fonction externe, le mot-clé global peut encore être appliqué pour créer une variable véritablement globale.
Exemple 5 : Variable globale dans une fonction imbriquée
def foo():
x = 20
def bar():
global x
x = 25
print("Avant d'appeler bar :", x)
print("Appel de bar maintenant")
bar()
print("Après l'appel de bar :", x)
foo()
print("x dans main :", x)
Sortie :
Avant d'appeler bar : 20 Appel de bar maintenant Après l'appel de bar : 20 x dans main : 25
À l'intérieur de foo(), x reste une variable locale. La fonction imbriquée bar() déclare x comme globale, donc l'affectation affecte le x de niveau module et est visible après la fin de foo().
Bien que global puisse être pratique, il est généralement préférable de concevoir des fonctions qui retournent de nouvelles valeurs plutôt que de muter l'état global. Cela favorise un code plus clair et des tests plus faciles. Pour les règles détaillées du langage, consultez la documentation officielle Python sur l'instruction global.
Python
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser l'instruction pass en Python : Guide pratique
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Comprendre les variables globales, locales et non locales en Python
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Maîtriser les itérateurs Python : fonctionnement et création des vôtres
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Maîtriser Python datetime : guide pratique pour les dates, heures et fuseaux horaires