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.
Pythondef 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.
Pythonmsg = '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.
Pythondef 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)
Pythondef 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)
Pythons = '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
Pythona = 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éfinition | Déclaré en dehors des fonctions | Déclaré dans une fonction |
| Durée de vie | Créé au démarrage du programme et détruit à la fin | Créé lorsque la fonction est appelée et détruit lors de son retour |
| Partage de données | Partagé entre toutes les fonctions | Non partagé ; n'existe que dans le cadre de sa fonction |
| Portée | Accessible n'importe où dans le programme | Accessible uniquement à l'intérieur de la fonction |
| Paramètres nécessaires | Aucun passage de paramètre nécessaire | Peut être créé via des paramètres ou des affectations à l'intérieur de la fonction |
| Stockage | Géré dans l'espace de noms global (emplacement mémoire non fixe) | Stocké dans l'espace de noms local de la fonction (stack frame) |
| Valeur | Les changements affectent l'ensemble du programme | Les changements sont locaux et n’affectent pas les autres fonctions |