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, le global
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 les global
mots-clés 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 un
global
mot-clé. - Nous utilisons des
global
mots clés pour lire et écrire une variable globale à l'intérieur d'une fonction. - L'utilisation d'un
global
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 de la 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: variable locale 'c' référencée avant l'affectation
En effet, nous ne pouvons accéder qu'à la variable globale mais 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 d'une 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:
À l'intérieur ajouter (): 2 En main: 2
Dans le programme ci-dessus, nous définissons c comme un mot clé global à l'intérieur de la add()
fonction.
Ensuite, on incrémente la variable c de 1
, ie c = c + 2
. Après cela, nous appelons la add()
fonction. Enfin, nous imprimons la variable globale c.
Comme nous pouvons le voir, un 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 module unique 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 modifions 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 vous pouvez 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:
Avant la barre d'appel: 20 Barre d'appel maintenant Après la barre d'appel: 20 x en main: 25
Dans le programme ci-dessus, nous avons déclaré une variable globale à l'intérieur de la fonction imbriquée bar()
. À l'intérieur de la foo()
fonction, x n'a aucun effet sur le mot-clé global.
Avant et après l'appel bar()
, la variable x prend la valeur de la variable locale ie x = 20
. En dehors de la foo()
fonction, la variable x prendra la valeur définie dans la bar()
fonction ie x = 25
. C'est parce que nous avons utilisé le global
mot-clé dans x pour créer une variable globale à l'intérieur de la bar()
fonction (portée locale).
Si nous apportons des modifications à l'intérieur de la bar()
fonction, les modifications apparaissent en dehors de la portée locale, c'est-à-dire foo()
.