2017-06-08 3 views
-2

Warum ändert sich der Wert der Variablen nicht, während global in Funktion verwendet wird.Verwendung globaler Variablen in Python

Fehle ich etwas?

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

    def change(): 

     global a   
     a = 5 

    change() 
    print(a) 
+4

können Sie den Einzug korrigieren – depperm

+6

Was ist der 'class testGlobal:' für? Dies muss nicht in einer Klasse sein, Python ist nicht Java. –

+0

Sie benötigen keine äußere Klasse für dieses Problem ... –

Antwort

0

Erstens: Wenn Ihre Variable innerhalb einer Klasse ist, ist es keine globale Variable. Sie müssen es außerhalb jeder Funktion/Methode/Klasse deklarieren.
Zweitens: Die Identität Ihrer Klasse ist falsch. Beginnen Sie innerhalb einer Klasse mit 4 Leerzeichen oder einem Tab.

1

Um Ihre beansprucht Ausgabe zu erhalten, würde der Code haben wie diese eingerückt werden:

class testGlobal: 

    a=2 
    print(a) 

    def change(): 

     global a   
     a = 5 

    change() 
    print(a) 

Beide print Anweisungen ausgeführt werden, während die Klasse, an welcher Stelle verweisen beide Verweise auf die -a definiert werden Klasse Variable a, nicht die global Variable a die 10 bezieht sich auf.


Wenn Sie wirklich an globalen Variablen interessiert sind, brauchen Sie diese Klasse überhaupt nicht. Probieren Sie den folgenden Code:

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

Danke für den Hinweis auf mich den Fehler. Ich möchte die Ausgabe als 2 5. Wie ändere ich den Wert der Klassenvariable innerhalb einer Funktion? – roadBurner

+0

Normalerweise definieren Sie nur Funktionen innerhalb einer Klassenfunktion; Du rufst sie nicht an. Mit diesem Code können Sie nicht; Sie müssten 'testGlobal.a' in der Definition von' change' verwenden, außer 'testGlobal' existiert noch nicht, wenn' change' aufgerufen wird. – chepner

Verwandte Themen