De retour Variables dans les Fonctions Python Pas le Droit de Travailler

J'ai essayé de renvoyer une variable dans une fonction dans une variable et l'utilisation à l'extérieur:

test = 0

def testing():
    test = 1
    return test

testing()
print(test)

Mais quand je le lance, le résultat est 0. Comment pourrais-je résoudre ce problème?

  • Changer le nom de la variable globale test à g_test et vous allez comprendre. Ils sont deux totalement différents variables, et en utilisant le même nom, vous êtes juste confus de vous-même.
  • Il y a 7 voix de cette écriture sur une réponse qui ressemble à droite. Mais je ne pense pas que quelqu'un fait l'a expliqué. Le vrai problème dans votre code (la seule raison qu'il ne fonctionne pas), c'est que lorsque vous faites l'appel de la fonction, vous n'avez pas de capture de la valeur de retour. Puis vous imprimez un original inchangé variable globale. Commentaires sur le champ d'application sont corrects. "test" à l'intérieur de votre fonction est locale et est une copie qui ne change pas le "test" de la variable qui est en dehors de la fonction.
  • Si vous êtes nouveau à Python, vous devriez google "mutation du rapport à nonmutating" et de lire des messages sur un Débordement de Pile en parler lorsque vous travaillez avec des listes et d'obtenir un comportement différent de apparemment le même code. Si vous passez "test" comme un argument, vous devez le retourner et de le capturer pour qu'il fonctionne. Mais ce comportement est différent pour la mutation de variables comme des listes. Espérons que vous trouverez ce utile en plus des corrections de code déjà fournis par des tiers à votre question.
  • oups - c'est un enfant de 3 ans post. Suppose que j'ai juste écrit que pour l'exhaustivité pour quelqu'un qui trébuche sur ce fil, tout en cherchant à résoudre un problème.
InformationsquelleAutor user2399308 | 2013-08-04