Mot-clé global Python (avec exemples)

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 globalmot 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 globalmots-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 globalmot-clé.
  • Nous utilisons des globalmots clés pour lire et écrire une variable globale à l'intérieur d'une fonction.
  • L'utilisation d'un globalmot - 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 globalmot - 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.pypour 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.pyfichier, pour stocker des variables globales

 a = 0 b = "empty"

Créer un update.pyfichier, pour modifier les variables globales

 import config config.a = 10 config.b = "alphabet"

Créer un main.pyfichier, pour tester les changements de valeur

 import config import update print(config.a) print(config.b)

Lorsque nous exécutons le main.pyfichier, la sortie sera

 10 alphabet

Dans ce qui précède, nous avons créé trois fichiers: config.py, update.pyet main.py.

Le module config.pystocke les variables globales de a et b. Dans le update.pyfichier, nous importons le config.pymodule et modifions les valeurs de a et b. De même, dans le main.pyfichier, nous importons les deux config.pyet update.pymodule. 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 globalmot-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().

Articles intéressants...