Maison  >  Article  >  développement back-end  >  Pourquoi une variable globale ne se met-elle pas à jour dans une fonction, ce qui entraîne une boucle infinie ?

Pourquoi une variable globale ne se met-elle pas à jour dans une fonction, ce qui entraîne une boucle infinie ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-19 12:39:29390parcourir

Why is a Global Variable not Updating Within a Function, Resulting in an Infinite Loop?

Différence de portée de variable entre les fonctions et les boucles

Cette question répond à un problème avec une variable globale qui n'est pas mise à jour dans une fonction, ce qui conduit à une boucle infinie. L'extrait de code donné est le suivant :

<code class="python">done = False

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

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

L'explication fournie suggère que la raison de ce problème réside dans la portée des variables dans les fonctions par rapport aux boucles. En Python, les fonctions créent leur propre espace de noms, distinct de l'espace de noms global. Par conséquent, attribuer une valeur à done dans la fonction ne modifie pas la variable globale done.

Pour résoudre ce problème, la réponse recommande d'utiliser le mot-clé global dans la fonction pour accéder explicitement à la variable globale :

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

En utilisant global, la fonction est capable de modifier la variable globale effectuée, mettant ainsi fin à la boucle infinie lorsque la condition if est remplie.

La réponse suggère en outre des techniques de débogage telles que l'utilisation d'un débogueur ou imprimer des déclarations pour retracer le flux d'exécution et identifier où le problème survient.

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