Ich habe in C, C# und Java programmiert. Jetzt benutze ich Python für eine Weile, aber ich habe einige Probleme mit dem Verständnis des Variablenumfangs festgestellt, was für mich im Moment sehr verwirrend ist. Zum Beispiel:Verwirrender Variablenbereich (Verschattungsvariable vom äußeren Bereich)
def f1():
print(spam) # spam magically come from outer scope. ok...
def f2():
spam = "bbb" # assignment shadows variable from outer scope (logical result of f1)
print(spam) # printing local spam variable
def f3():
print(spam) # ERROR: unresolved reference 'spam'
spam = "ccc" # in f1 function everything was fine but adding assignment AFTER
# printing (in opposite to f2 function) causes error in line above
def f4():
print(spam) # nothing wrong here, assignment line below is commented
# spam = "ccc"
spam = "aaa"
Warum auf der Erde Funktionen können Variablen außerhalb ihres Geltungsbereichs erreichen? Und warum Shadowing-Variable aus dem äußeren Bereich ist in Ordnung, aber nur, wenn wir es vorher nicht verwendet haben?
Sind Sie sicher, dass Sie einen "nicht aufgelösten Referenzfehler" in "f3" bekommen? Ich würde erwarten, dass der Fehler "UnboundLocalError: lokale Variable" Spam "vor der Zuweisung referenziert", was eher selbsterklärend ist. – kazemakase
Was passiert in 'f2' ist Ihre sich ändernde Variable' spam' von 'aaa' zu' bbb' – mtkilic
@kazemakase Sie haben Recht, der Fehler, den ich geschrieben habe, stammt von IDE – user3616181