2017-06-08 2 views
-2

Pourquoi la valeur de la variable ne change pas en utilisant global dans la fonction.Utilisation de variables globales en Python

Ai-je raté quelque chose?

class testglobal(): 
    a=2 
    print(a) 

    def change(): 

     global a   
     a = 5 

    change() 
    print(a) 
+4

pouvez-vous corriger l'indentation – depperm

+6

Quelle est la 'classe testGlobal:' pour? Cela n'a pas besoin d'être dans une classe, Python n'est pas Java. –

+0

Vous n'avez pas besoin d'une classe externe pour ce problème ... –

Répondre

0

Première: Si votre variable est dans une classe, ce n'est pas une variable globale. Vous devez le déclarer en dehors de toute fonction/méthode/classe.
Deuxième: L'identification de votre classe est erronée. Dans une classe, commencez avec 4 espaces ou un onglet.

1

Pour obtenir votre sortie revendiquée, votre code devrait être en retrait comme ceci:

class testGlobal: 

    a=2 
    print(a) 

    def change(): 

     global a   
     a = 5 

    change() 
    print(a) 

Les deux print Les instructions sont exécutées alors que la classe est définie, à quel point les deux références à a se rapportent à la classe variable a, pas la variable globala que change fait référence à.


Si vous êtes vraiment intéressé par les variables globales, vous n'avez pas du tout besoin de cette classe. Essayez le code suivant:

a = 2 
print(a) 
def change(): 
    global a 
    a = 5 
change() 
print(a) 
+0

Merci de me signaler l'erreur. Je veux la sortie comme 2 5. Alors, comment puis-je changer la valeur de la variable de classe dans une fonction? – roadBurner

+0

En règle générale, vous définissez uniquement des fonctions dans une fonction de classe; vous ne les appelez pas. Avec ce code, vous ne pouvez pas; vous devrez utiliser 'testGlobal.a' dans la définition de' change', sauf que 'testGlobal' n'existe pas encore quand' change' est appelé. – chepner