logo

Variables globales et locales en Python

En Python, les variables jouent un rôle clé dans le stockage et la gestion des données. Leur comportement et leur accessibilité dépendent de l'endroit où ils sont définis dans le programme. Dans cet article, nous explorerons les variables globales et locales, leur fonctionnement et les scénarios courants avec des exemples.

Variables locales

Les variables locales sont créées à l'intérieur d'une fonction et n'existent que lors de son exécution. Ils ne sont pas accessibles depuis l’extérieur de la fonction.



piles java

Exemple 1 : Dans ce code, nous créons et accédons à une variable locale dans une fonction.

Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Sortir
Hello from inside the function! 

Explication: Nous définissons saluer() avec une variable locale message et imprimez-le. Puisque msg n'existe que pendant l'exécution de la fonction, il est accessible au sein de la fonction. Appel saluer() affiche le message.

Exemple 2 : Dans cet exemple, nous créons une variable locale à l'intérieur d'une fonction, puis essayons d'y accéder en dehors de la fonction, ce qui provoque une erreur.



Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Sortir

Traceback (dernier appel le plus récent) :
Fichier '/home/guest/sandbox/Solution.py', ligne 6 dans
print('Fonction extérieure :' msg)
NameError : le nom 'msg' n'est pas défini

Explication : msg est une variable locale à l'intérieur saluer() et n'est accessible que là-bas. L'imprimer à l'extérieur provoque une erreur car il n'existe pas globalement.



Variables globales

Les variables globales sont déclarées en dehors de toutes les fonctions et sont accessibles n'importe où dans le programme, y compris à l'intérieur des fonctions.

Dans cet exemple, nous créons une variable globale, puis y accédons à la fois à l'intérieur et à l'extérieur d'une fonction.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Sortir
Inside function: Python is awesome! Outside function: Python is awesome! 

Explication : msg est une variable globale accessible à la fois à l'intérieur et à l'extérieur du afficher() fonction. Appel afficher() imprime le global message et impression message en dehors de la fonction fonctionne comme prévu.

Note: Si une variable n'est pas trouvée dans une fonction (portée locale), Python la recherche automatiquement dans la portée globale. Cependant, si une variable locale a le même nom qu'une variable globale, elle masquera la variable globale à l'intérieur de cette fonction.

Utilisation de variables locales et globales

Si une variable est définie à la fois globalement et localement avec le même nom, la variable locale masque la variable globale à l'intérieur de la fonction. Les modifications apportées à la variable locale n'affectent pas la variable globale, sauf si vous déclarez explicitement la variable comme globale.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Sortir
Me too. I love Geeksforgeeks 

Explication: À l'intérieur amusant() s est une variable locale définie sur « Moi aussi ». et imprime cette valeur. En dehors du monde s reste 'J'aime Geeksforgeeks' donc j'imprime s affiche ensuite la valeur globale.

Modification de variables globales dans une fonction

Par défaut, on ne peut pas modifier une variable globale à l'intérieur d'une fonction sans la déclarer comme globale. Si vous essayez, Python générera une erreur car il traite la variable comme locale. Pour modifier une variable globale utilisez le mot clé global .

Sans global (provoque une erreur)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Sortir

UnboundLocalError : variable locale 's' référencée avant l'affectation

Explication: À l'intérieur de fun(), Python suppose que s est local puisque nous essayons de le modifier. Mais aucun local n'existe avant cette ligne, donc une erreur se produit.

Avec global (fonctionne correctement)

Python
s = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s) 

Sortir
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Explication:

  • Déclarer s comme global indique à Python d'utiliser la variable de la portée globale.
  • La fonction ajoute d'abord 'GFG' puis réaffecte s.
  • Les modifications persistent en dehors de la fonction.

Global vs Local avec le même nom

Python
a = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a) 

Sortir
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Explication:

  • f() imprime un a global sans le modifier.
  • g() crée un local et un global en laissant intact.
  • h() déclare a comme global et le modifie.

Variable locale vs variable globale

Base de comparaison Variable globale Variable locale
DéfinitionDéclaré en dehors des fonctionsDéclaré dans une fonction
Durée de vieCréé au démarrage du programme et détruit à la finCréé lorsque la fonction est appelée et détruit lors de son retour
Partage de donnéesPartagé entre toutes les fonctionsNon partagé ; n'existe que dans le cadre de sa fonction
PortéeAccessible n'importe où dans le programmeAccessible uniquement à l'intérieur de la fonction
Paramètres nécessairesAucun passage de paramètre nécessairePeut être créé via des paramètres ou des affectations à l'intérieur de la fonction
StockageGéré dans l'espace de noms global (emplacement mémoire non fixe)Stocké dans l'espace de noms local de la fonction (stack frame)
ValeurLes changements affectent l'ensemble du programmeLes changements sont locaux et n’affectent pas les autres fonctions