Python Fehlermeldung "local variable 'a' referenced before assignment"?
tritt auf bei Folgendem:
a = 1 b = 2
def tausch() :
a = a ^ b
b = b ^ a
a = a ^ b
Bei Aufruf von "tausch" kommt dann diese Fehlermeldung:
"
Traceback (most recent call last): File "", line 1, in tausch() File "", line 2, in tausch a = a ^ b UnboundLocalError: local variable 'a' referenced before assignment
"
"tausch" soll 2 int Variablen vertauschen. Wenn ich die Befehle einzeln hintereinander ins Terminal eingebe funktioniert es.
Wenn ich die Variablen erst in der Methode definiere funktioniert es auch wie ich gerade festgestellt hab...
Warum geht es manchmal und manchmal nicht? Was bedeutet die Fehlermeldung?
Danke :)
2 Antworten
Der Fehler liegt hier:
a = a ^ b
Du definierst lokal in der Methode tausch() eine Variable a und definierst diese als a^b, also greifst du in der Definition von a schon auf a zu und das geht natürlich nicht.
Abhilfe schafft das Schlüsselwort global, das anzeigt, dass du dich auf die globale Variable (jene vor der Methode) beziehst und keine neue, lokale Variable definieren möchtest.
a = 1 b = 2 def tausch() : global a a = a ^ b global b b = b ^ a
LG Willibergi
Du greifst nicht auf die globale Variable zu:
http://stackoverflow.com/questions/11904981/local-variable-referenced-before-assignment
Dankeschön :)