Diese Frage ist ein Ergebnis eines Schülers von mir, der eine Frage über den folgenden Code stellt, und ich bin ehrlich gesagt völlig ratlos. Jede Hilfe wäre willkommen.Warum funktioniert der Bereich so?
Wenn ich diesen Code ausführen:
#test 2
a = 1
def func2(x):
x = x + a
return(x)
print(func2(3))
funktioniert es völlig in Ordnung. Es ist in der Lage, den global-scoped Variable a zu nehmen und seinen Wert verwenden, um die Berechnung auszuführen und den Wert 4.
jedoch zurückkehren, wenn ich es so weit ändern:
# test 3
a = 1
def func3(x):
a = x + a
return(x)
print(func3(3))
ich dann einen Fehler :
local variable 'a' referenced before assignment
Warum erhalte ich diesen Fehler nur, wenn ich den Wert von a in der Funktion auf einen neuen Wert aktualisiert werden soll, basierend auf dem ursprünglichen Wert? Was verstehe ich nicht? Ich denke, dass dieser zweite Code gut funktionieren sollte.
Vielen Dank im Voraus für jede Hilfe und Einsicht.
persönlich (streng nicht erforderlich ist, was) Ich erkläre immer 'global' auf globale Variablen an der Spitze meiner Funktion, auch wenn ich sie nur lese. Es ist dokumentarisch und teilweise defensiv. Eine Möglichkeit, dies zu betrachten, ist, dass globale Variablen in Python nicht unterstützt werden, da sie die Kapselung unterbrechen. Also ja, sie sind ein bisschen peinlich. Versuche sie zu vermeiden. – cdarke