Maison  >  Article  >  développement back-end  >  Pourquoi l’appel de fonction ne met-il pas à jour la variable globale ?

Pourquoi l’appel de fonction ne met-il pas à jour la variable globale ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 12:00:29502parcourir

Why Does Function Call Not Update Global Variable?

L'appel de fonction ne met pas à jour la variable globale

Cette question explore un défi de programmation où une variable globale, initialement affectée comme False, n'est pas t étant mis à jour lorsqu’il est référencé dans une fonction. Malgré la fonction modifiant la valeur de la variable globale, la boucle du programme principal continue de s'exécuter, conduisant à une boucle infinie. Comprendre ce problème nécessite d'approfondir le concept d'espaces de noms et de portée des variables.

Espace de noms et portée des variables

En programmation, chaque fonction et module crée son propre espace de noms. Un espace de noms est une collection de noms (variables, fonctions, etc.) connus et accessibles dans cette portée. Lorsqu'une variable reçoit une valeur dans une fonction, une nouvelle variable est créée dans l'espace de noms de la fonction, même s'il existe une variable globale du même nom.

Utilisation de variables globales

Dans ce cas, lorsqu'une variable globale appelée "done" est référencée dans la fonction, une nouvelle variable locale du même nom est créée dans l'espace de noms de la fonction. Ce « fait » local est distinct du « fait » global. Changer le "done" local n'a aucun effet sur la variable globale.

Solution

Pour surmonter cela, le mot-clé global doit être utilisé pour référencer explicitement la variable globale dans la fonction. En utilisant global done, la fonction indique à l'interpréteur d'accéder à la variable globale "done" au lieu d'en créer une nouvelle locale.

Code modifié

Pour résoudre le problème , la fonction peut être modifiée comme suit :

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

Explication

L'utilisation de global done établit une connexion entre la variable utilisée dans la fonction et la variable globale. Lorsque la fonction modifie la valeur de done, elle met à jour la même variable globale référencée initialement. Cela garantit que la boucle while du programme principal se terminera comme prévu lorsque la fonction sera définie sur True.

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