Variables globales, locales et non locales Python (avec exemples)

Dans ce didacticiel, vous découvrirez les variables globales Python, les variables locales, les variables non locales et leur utilisation.

Vidéo: Variables locales et globales Python

Variables globales

En Python, une variable déclarée en dehors de la fonction ou dans la portée globale est appelée variable globale. Cela signifie qu'une variable globale est accessible à l'intérieur ou à l'extérieur de la fonction.

Voyons un exemple de la façon dont une variable globale est créée en Python.

Exemple 1: créer une variable globale

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Production

 x à l'intérieur: global x à l'extérieur: global

Dans le code ci-dessus, nous avons créé x en tant que variable globale et défini a foo()pour afficher la variable globale x. Enfin, nous appelons le foo()qui affichera la valeur de x.

Que faire si vous souhaitez modifier la valeur de x dans une fonction?

 x = "global" def foo(): x = x * 2 print(x) foo()

Production

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

La sortie affiche une erreur car Python traite x comme une variable locale et x n'est pas non plus défini à l'intérieur foo().

Pour que cela fonctionne, nous utilisons le globalmot - clé. Visitez Python Global Keyword pour en savoir plus.

Variables locales

Une variable déclarée dans le corps de la fonction ou dans la portée locale est connue sous le nom de variable locale.

Exemple 2: accès à une variable locale en dehors de la portée

 def foo(): y = "local" foo() print(y)

Production

 NameError: le nom 'y' n'est pas défini

La sortie affiche une erreur car nous essayons d'accéder à une variable locale y dans une portée globale alors que la variable locale ne fonctionne qu'à l'intérieur foo()ou à une portée locale.

Voyons un exemple sur la manière dont une variable locale est créée en Python.

Exemple 3: créer une variable locale

Normalement, nous déclarons une variable à l'intérieur de la fonction pour créer une variable locale.

 def foo(): y = "local" print(y) foo()

Production

 local

Jetons un coup d'œil au problème précédent où x était une variable globale et nous voulions modifier x à l'intérieur foo().

Variables globales et locales

Ici, nous allons montrer comment utiliser des variables globales et des variables locales dans le même code.

Exemple 4: Utilisation des variables globales et locales dans le même code

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Production

 global global local

Dans le code ci-dessus, nous déclarons x comme une variable globale et y comme une variable locale dans le foo(). Ensuite, nous utilisons l'opérateur de multiplication *pour modifier la variable globale x et nous imprimons à la fois x et y.

Après avoir appelé le foo(), la valeur de x devient global globalparce que nous avons utilisé le x * 2pour imprimer deux fois global. Après cela, nous imprimons la valeur de la variable locale y ie local.

Exemple 5: variable globale et variable locale de même nom

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Production

 local x: 10 global x: 5

Dans le code ci-dessus, nous avons utilisé le même nom x pour la variable globale et la variable locale. Nous obtenons un résultat différent lorsque nous imprimons la même variable car la variable est déclarée dans les deux portées, c'est-à-dire la portée locale à l'intérieur foo()et la portée globale à l'extérieur foo().

When we print the variable inside foo() it outputs local x: 10. This is called the local scope of the variable.

Similarly, when we print the variable outside the foo(), it outputs global x: 5. This is called the global scope of the variable.

Nonlocal Variables

Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.

Let's see an example of how a nonlocal variable is used in Python.

We use nonlocal keywords to create nonlocal variables.

Example 6: Create a nonlocal variable

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Output

 inner: nonlocal outer: nonlocal

Dans le code ci-dessus, il existe une inner()fonction imbriquée . Nous utilisons des nonlocalmots clés pour créer une variable non locale. La inner()fonction est définie dans le cadre d'une autre fonction outer().

Remarque : si nous modifions la valeur d'une variable non locale, les modifications apparaissent dans la variable locale.

Articles intéressants...