La fonction ne change pas de variable globale
mon code est comme suit:
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()
Pour une raison quelconque, quand mon code entre dans le if, il n'est pas sortie de la boucle while après c'est fait avec la fonction().
MAIS, si je code comme ceci:
done = False
while done == False:
for loop:
code
if not comply:
done = True #let's say that the code enters this if-statement
...il sort de la boucle while. Ce qui se passe ici?
J'ai fait en sorte que mon code entre dans le if. Je n'ai pas d'exécuter le débogueur encore parce que mon code a beaucoup de boucles (assez grand tableau 2D) et j'ai donné sur le débogage parce qu'elle est tellement fastidieux. Comment se "fait" n'est pas modifié lorsqu'il est dans une fonction?
- Beaucoup de Python variable globale questions d'aujourd'hui.
- Merci les gars! Ne peux pas croire que c'était que simple, mais il est certainement une touche différente de Java/C++
Vous devez vous connecter pour publier un commentaire.
Votre problème est que les fonctions de créer leur propre espace de noms, ce qui signifie que
done
au sein de la fonction est un autre quedone
dans le deuxième exemple. Utilisationglobal done
à utiliser la premièredone
au lieu d'en créer un nouveau.Une explication de comment utiliser
global
peut être trouvé icivous devez utiliser le mot clé global de laisser l'interprète de savoir que vous faites référence à la variable globale
done
, sinon il va créer un autre qui ne peut être lu que dans la fonction.Utilisation
global
, alors seulement vous pouvez modifier une variable globale, autrement, un énoncé commedone = True
à l'intérieur de la fonction déclarer une nouvelle variable locale nomméedone
:Lire plus sur la déclaration mondiale.