Mot-clé global Python
Mot-clé global Python
Dans cet article, vous découvrirez le mot-clé global, la variable globale et quand utiliser des mots-clés globaux.
Avant de lire cet article, assurez-vous d'avoir quelques notions de base sur les variables globales, locales et non locales de Python.
Quel est le mot-clé global
En Python, global
Le mot clé vous permet de modifier la variable en dehors de la portée actuelle. Il est utilisé pour créer une variable globale et apporter des modifications à la variable dans un contexte local.
Règles du mot-clé global
Les règles de base pour global
mot-clé en Python sont :
- Lorsque nous créons une variable dans une fonction, elle est locale par défaut.
- Lorsque nous définissons une variable en dehors d'une fonction, elle est globale par défaut. Vous n'êtes pas obligé d'utiliser
global
mot-clé. - Nous utilisons
global
mot-clé pour lire et écrire une variable globale dans une fonction. - Utilisation de
global
un mot-clé en dehors d'une fonction n'a aucun effet.
Utilisation du mot-clé global
Prenons un exemple.
Exemple 1 :Accéder à une variable globale depuis l'intérieur d'une fonction
c = 1 # global variable
def add():
print(c)
add()
Lorsque nous exécutons le programme ci-dessus, la sortie sera :
1
Cependant, nous pouvons avoir des scénarios dans lesquels nous devons modifier la variable globale depuis l'intérieur d'une fonction.
Exemple 2 :Modification d'une variable globale depuis l'intérieur de la fonction
c = 1 # global variable
def add():
c = c + 2 # increment c by 2
print(c)
add()
Lorsque nous exécutons le programme ci-dessus, la sortie affiche une erreur :
UnboundLocalError: local variable 'c' referenced before assignment
En effet, nous ne pouvons accéder qu'à la variable globale, mais nous ne pouvons pas la modifier depuis l'intérieur de la fonction.
La solution pour cela est d'utiliser le global
mot-clé.
Exemple 3 :Modification de la variable globale depuis l'intérieur d'une fonction à l'aide de global
c = 0 # global variable
def add():
global c
c = c + 2 # increment by 2
print("Inside add():", c)
add()
print("In main:", c)
Lorsque nous exécutons le programme ci-dessus, la sortie sera :
Inside add(): 2 In main: 2
Dans le programme ci-dessus, nous définissons c en tant que mot-clé global à l'intérieur du add()
fonction.
Ensuite, on incrémente la variable c par 2 , soit c = c + 2
. Après cela, nous appelons le add()
fonction. Enfin, nous imprimons la variable globale c .
Comme nous pouvons le voir, le changement s'est également produit sur la variable globale en dehors de la fonction, c = 2
.
Variables globales dans les modules Python
En Python, nous créons un seul module config.py
pour contenir des variables globales et partager des informations entre les modules Python au sein du même programme.
Voici comment nous pouvons partager des variables globales entre les modules Python.
Exemple 4 :Partager une variable globale entre les modules Python
Créer un config.py
fichier, pour stocker des variables globales
a = 0
b = "empty"
Créer un update.py
fichier, pour modifier les variables globales
import config
config.a = 10
config.b = "alphabet"
Créer un main.py
fichier, pour tester les changements de valeur
import config
import update
print(config.a)
print(config.b)
Lorsque nous exécutons le main.py
fichier, la sortie sera
10 alphabet
Dans ce qui précède, nous avons créé trois fichiers :config.py
, update.py
, et main.py
.
Le module config.py
stocke les variables globales de a et b . Dans le update.py
fichier, nous importons le config.py
module et modifier les valeurs de a et b . De même, dans le main.py
fichier, nous importons les deux config.py
et update.py
module. Enfin, nous imprimons et testons les valeurs des variables globales qu'elles soient modifiées ou non.
Global dans les fonctions imbriquées
Voici comment utiliser une variable globale dans une fonction imbriquée.
Exemple 5 :Utilisation d'une variable globale dans une fonction imbriquée
def foo():
x = 20
def bar():
global x
x = 25
print("Before calling bar: ", x)
print("Calling bar now")
bar()
print("After calling bar: ", x)
foo()
print("x in main: ", x)
La sortie est :
Before calling bar: 20 Calling bar now After calling bar: 20 x in main: 25
Dans le programme ci-dessus, nous avons déclaré une variable globale dans la fonction imbriquée bar()
. À l'intérieur de foo()
fonction, x n'a aucun effet sur le mot-clé global.
Avant et après avoir appelé le bar()
, la variable x prend la valeur de la variable locale c'est-à-dire x = 20
. En dehors du foo()
fonction, la variable x prendra la valeur définie dans le bar()
fonction c'est-à-dire x = 25
. C'est parce que nous avons utilisé global
mot clé en x pour créer une variable globale dans le bar()
fonction (portée locale).
Si nous apportons des modifications dans le bar()
fonction, les modifications apparaissent en dehors de la portée locale, c'est-à-dire foo()
.
Python