Variables globales et comment changer d'une fonction en Python

Shikha Chaudhary 30 janvier 2023
  1. Utiliser des variables globales et les modifier à partir d’une fonction en Python
  2. Créer la variable Global en Python
  3. Changer la valeur de la variable Global d’une fonction en Python
  4. le mot-clé Global en Python
  5. les fonctions multiples et une variable globale
  6. une fonction qui a une variable avec le même nom qu’une variable globale
  7. Conclusion
Variables globales et comment changer d'une fonction en Python

Les variables globales en Python sont les variables qui ont une portée globale. En d’autres termes, leur portée n’est pas limitée à une fonction ou à un bloc spécifique du code source.

Utiliser des variables globales et les modifier à partir d’une fonction en Python

Tout d’abord, déclarez la variable x.

def avengers():
    x = 10
    print("Gibberish")


avengers()
print(x)

Production:

Gibberish

NameError: name 'x' is not defined

La variable x est à l’intérieur de la fonction avengers. Cela signifie que la portée de cette variable est limitée à cette fonction uniquement.

C’est pourquoi nous obtenons une erreur si nous essayons d’accéder à cette variable en dehors de cette fonction.

Créer la variable Global en Python

Déplacez la déclaration de la variable x en dehors de la fonction.

x = 10


def avengers():
    print("Gibberish")


avengers()
print(x)

Production:

Gibberish
10

La variable x est définie en dehors de la fonction, et donc, nous pouvons l’utiliser n’importe où dans notre programme.

C’est aussi une variable globale. Déclarer une variable dans la portée globale crée une variable globale en Python.

On peut aussi accéder à la variable globale x de la fonction avengers.

x = 10


def avengers():
    print("From avengers:", x)


avengers()
print("Outside avengers:", x)

Production:

From avengers: 10
Outside avengers: 10

Changer la valeur de la variable Global d’une fonction en Python

Ce code a une variable globale x avec 10. Ensuite, à l’intérieur de la fonction change, on ajoute 12 à cette variable x.

Une instruction d’impression à l’intérieur de la fonction doit imprimer la valeur mise à jour de x.

x = 10


def change():
    x = x + 12
    print(x)


change()

Production:

UnboundLocalError: local variable 'x' referenced before assignment

En python, une fonction ne peut accéder et imprimer qu’une variable globale. Nous devons indiquer la fonction faisant référence à toute affectation ou modification de la variable globale.

Si nous ne le spécifions pas, la fonction pense que les affectations et les modifications sont apportées à la variable locale elle-même. Ainsi, nous obtenons cette erreur.

Utilisez le mot-clé global pour modifier une valeur de variable globale depuis l’intérieur d’une fonction Python.

le mot-clé Global en Python

Python vous donne un mot-clé nommé global pour modifier une variable en dehors de sa portée. Utilisez-le lorsque vous devez modifier la valeur d’une variable ou effectuer des affectations.

Essayons de corriger le code ci-dessus en utilisant le mot-clé global.

x = 10


def change():
    global x
    x = x + 12
    print(x)


change()

Production:

22

Voyez comment nous spécifions x comme global en utilisant le mot-clé global à la troisième ligne.

Voyons maintenant la valeur de la variable x lors de son impression en dehors de la fonction.

x = 10


def change():
    global x
    x = x + 12
    print(x)


change()
print(x)

Production:

22
22

Étant donné que la fonction a mis à jour x de 10 à 22, nous obtiendrons la valeur mise à jour en sortie même lors de l’accès à la variable en dehors de la portée locale.

var = "A"


def chocolate():
    print("From chocolate:", var)


def cake():
    global var
    var = var * 2
    print("From cake:", var)


chocolate()
cake()
print("From main:", var)

Production:

From chocolate: A
From cake: AA
From main: AA

La meilleure inférence que vous pouvez tirer de cette sortie est - l’ordre compte. La fonction chocolate utilise la valeur initiale de var et non la valeur modifiée.

En effet, la fonction cake qui modifie la valeur de var est appelée après la fonction chocolate. Si nous appelons d’abord la fonction cake, la fonction chocolate utilisera également la valeur mise à jour de var.

var = "A"


def chocolate():
    print("From chocolate:", var)


def cake():
    global var
    var = var * 2
    print("From cake:", var)


cake()
chocolate()
print("From main:", var)

Production:

From cake: AA
From chocolate: AA
From main: AA

Cela nous amène à quelques règles que vous devez suivre lors de l’utilisation du mot-clé global de Python.

  • Par défaut, une variable à l’intérieur d’une fonction est locale, et une variable à l’extérieur d’une fonction est globale. N’utilisez pas ce mot-clé pour les variables en dehors d’une fonction.
  • L’utilisation du mot-clé global en dehors d’une fonction en Python n’impacte en rien le code.
  • L’utilisation principale du mot-clé global est de faire des affectations ou des changements en Python. Ainsi, nous n’en avons pas besoin pour simplement accéder ou imprimer la variable.

les fonctions multiples et une variable globale

Ici, nous avons une variable globale s avec la valeur 1. Voyez comment la fonction college utilise le mot clé global pour modifier la valeur de s.

s = 1


def college():
    global s
    s = s + 5
    print("College students: ", s)
    return s


def school():
    s = college()
    s = s + 10
    print("School students: ", s)
    return s


college()
school()
print("Global students: ", s)

Production:

College students:  6
College students:  11
School students:  21
Global students: 11

Premièrement, nous appelons la fonction college. Cette fonction modifie la variable globale s et la change en 6.

Nous obtenons la sortie sous la forme 6 de la première instruction d’impression. Ensuite, on appelle la fonction school.

Nous appelons à nouveau la fonction school à l’intérieur de la fonction college. Cette fois, la fonction college modifie également la valeur de la variable s.

Il prend la valeur précédente de 6 puis la met à jour à 11. Ainsi, la valeur finale de la variable globale devient maintenant 11.

Ensuite, la fonction school le modifie, mais cela ne sera pas mis à jour dans la variable globale. Il utilise la valeur mise à jour de s et imprime la valeur après avoir ajouté 10.

Il n’utilise pas le mot clé global. D’où la sortie 21. Vous pouvez maintenant voir pourquoi la sortie de la dernière instruction est 11.

Ce n’est rien d’autre que la valeur mise à jour de la variable globale s.

une fonction qui a une variable avec le même nom qu’une variable globale

Il est possible que nous ayons une fonction qui ait une variable déclarée à l’intérieur avec le même nom qu’une variable globale.

Une question inévitable qui se pose ici est la suivante : quelle variable la fonction utilisera-t-elle ? Locale ou mondiale ? Voyons.

# the global variable
a = 5

# function


def music():

    # variable inside function with same name as global variable
    a = 10
    print("Music:", a)


music()
print(a)

Production:

Music: 10
5

Il y a une variable globale a dans ce code, dont la valeur est 5. La fonction music possède également une variable nommée a.

La valeur de cette variable est 10. Lorsque nous accédons à la valeur de la variable a à l’intérieur de la fonction, nous obtenons la valeur de la variable locale à cette fonction, qui est 10.

Lorsque nous accédons à la valeur de a depuis l’extérieur de cette fonction, nous obtenons la sortie sous la forme 5.

Cela implique que si la variable locale est présente avec le même nom que la variable globale dans une portée spécifique, elle a plus de priorité que la variable globale.

Conclusion

Ce tutoriel a enseigné les bases des variables globales en Python. Nous avons vu en quoi elles sont différentes des variables locales et comment nous les créons en Python.