Maison >développement back-end >Tutoriel Python >Quand utiliser le mot-clé global pour les variables globales ?

Quand utiliser le mot-clé global pour les variables globales ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 12:23:02503parcourir

When to Use the Global Keyword for Global Variables?

Portée des fonctions et variables globales

Lors de l'utilisation de fonctions en programmation, il est important de comprendre le concept de portée. Les fonctions créent leur propre espace de noms privé, distinct de la portée globale. Cela signifie que les variables déclarées dans une fonction ne sont accessibles qu'au sein de cette fonction.

Problème : la fonction ne modifie pas la variable globale

Considérez le code suivant :

done = False

def function():
    for loop:
        code
        if not comply:
            done = True

while done == False:
    function()

L'intention de ce code consiste à quitter la boucle while lorsque done est défini sur True dans la fonction (). Cependant, le code ne quitte pas la boucle une fois que function() est défini sur True.

Pourquoi le problème se produit

Le problème survient parce que la variable effectuée dans la fonction() est une variable locale variable, créée dans l'espace de noms de la fonction. Elle est distincte de la variable globale done définie en dehors de la fonction. Lorsque la fonction() attribue une nouvelle valeur à done, elle modifie en fait la variable locale, pas la variable globale.

Solution : Utiliser global

Pour résoudre ce problème, vous devez utiliser le mot-clé global pour référencer explicitement la variable globale dans la fonction. Voici le code corrigé :

def function():
    global done
    for loop:
        code
        if not comply:
            done = True

En utilisant global, vous vous assurez que la variable done à l'intérieur de la fonction fait référence à la même variable définie dans la portée globale. Cela vous permet de modifier la variable globale depuis la fonction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn