Maison >développement back-end >Tutoriel Python >Comment les fonctions affectent-elles les variables globales ? Démystifier la portée et les interactions

Comment les fonctions affectent-elles les variables globales ? Démystifier la portée et les interactions

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-19 12:14:02270parcourir

How Do Functions Affect Global Variables? Demystifying the Scope and Interactions

Effets des fonctions sur les variables globales : une confusion dévoilée

Lorsque vous travaillez avec des fonctions et des variables globales, il est crucial de comprendre comment leur portée et leurs interactions affectent le comportement de votre code. Examinons un cas spécifique où une fonction semble ne pas parvenir à mettre à jour une variable globale, ce qui entraîne des résultats inattendus.

Considérez le code suivant :

<code class="python">done = False

def function():
    for loop:
        code
        if not comply:
            done = True  # Let's assume the code enters this if-statement

while done == False:
    function()</code>

Comme vous l'avez remarqué, ceci le code continue d'exécuter function() même après avoir défini done sur True. La raison en est que la fonction() crée son propre espace de noms local et que toutes les modifications apportées aux variables au sein de cette fonction ne sont pas propagées à la portée globale. Pour utiliser la variable globale done, vous devez déclarer explicitement sa nature globale au sein de la fonction à l'aide du mot-clé global :

<code class="python">def function():
    global done
    for loop:
        code
        if not comply:
            done = True</code>

En incorporant le mot-clé global, vous établissez un lien entre la variable globale et son local homologue au sein de la fonction. Par conséquent, toute modification apportée à done dans la fonction sera reflétée directement dans la portée globale, provoquant la sortie de la boucle while lorsque done devient True.

En revanche, dans cet exemple :

<code class="python">done = False

while done == False:
    for loop:
    code
    if not comply:
        done = True  # Let's assume the code enters this if-statement</code>

la variable done est définie dans la portée de la boucle while et n'est donc pas affectée par la variable done définie en dehors de la boucle. Par conséquent, la boucle while se terminera comme prévu lorsque done est défini sur True dans la portée de la boucle.

Comprendre la portée des variables et les effets des fonctions sur les variables globales est essentiel pour écrire du code robuste et prévisible. N'oubliez jamais d'examiner attentivement la façon dont vos fonctions interagissent avec les variables globales et d'utiliser le mot-clé global judicieusement pour vous assurer que les modifications apportées au sein des fonctions sont propagées à la portée globale comme prévu.

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