Frage Lokale (?) Variable, auf die vor der Zuweisung verwiesen wird [duplizieren]


Mögliche Duplikate:
lokale Variable, auf die vor der Zuweisung verwiesen wird
Python 3: UnboundLocalError: lokale Variable, auf die vor der Zuweisung verwiesen wird 

test1 = 0
def testFunc():
    test1 += 1
testFunc()

Ich erhalte den folgenden Fehler:

UnboundLocalError: lokale Variable 'test1', auf die vor der Zuweisung verwiesen wird.

Fehler sagt das 'test1' ist lokale Variable, aber ich dachte, dass diese Variable global ist

So ist es global oder lokal und wie man diesen Fehler löst, ohne global zu gehen test1 als Argument zu testFunc?


75
2017-08-10 15:39


Ursprung


Antworten:


Um sie zu ändern test1 Innerhalb einer Funktion müssen Sie definieren test1 als globale Variable, zum Beispiel:

test1 = 0
def testFunc():
    global test1 
    test1 += 1
testFunc()

Wenn Sie jedoch nur die globale Variable lesen müssen, können Sie sie ohne das Schlüsselwort drucken global, so:

test1 = 0
def testFunc():
     print test1 
testFunc()

Wenn Sie jedoch eine globale Variable ändern müssen, müssen Sie das Schlüsselwort verwenden global.


136
2017-08-10 15:43



Beste Lösung: Nicht verwenden globals

>>> test1 = 0
>>> def test_func(x):
        return x + 1

>>> test1 = test_func(test1)
>>> test1
1

35
2017-08-10 15:45



Sie müssen angeben, dass test1 global ist:

test1 = 0
def testFunc():
    global test1
    test1 += 1
testFunc()

7
2017-08-10 15:41