def fun():
if False:
x=3
print(locals())
print(x)
fun()
Ausgabe und Fehlermeldung kompiliert:Python lokale Variable Prinzip
{}
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-57-d9deb3063ae1> in <module>()
4 print(locals())
5 print(x)
----> 6 fun()
<ipython-input-57-d9deb3063ae1> in fun()
3 x=3
4 print(locals())
----> 5 print(x)
6 fun()
UnboundLocalError: local variable 'x' referenced before assignment
Ich frage mich, wie der Python-Interpreter arbeitet. Beachten Sie, dass x = 3 überhaupt nicht ausgeführt wird und nicht als lokale Variable behandelt werden sollte, was bedeutet, dass der Fehler "name 'x' ist nicht definiert" ist. Aber schauen Sie in den Code und die Fehlermeldung, ist es nicht der Fall. Kann jemand hinter dieser Situation das Mechanismusprinzip der Kompilierung des Python-Interpreters erklären?
möglich duplizieren http://stackoverflow.com/q/7969949/3758972 –
Dies könnte relevant sein: [Kurze Beschreibung der Scoping-Regeln] (http://stackoverflow.com/questions/291978/short-description-of- Scoping-Regeln) –
Wenn eine der folgenden Antworten Ihr Problem behebt, sollten Sie es akzeptieren (klicken Sie auf das Häkchen neben der entsprechenden Antwort). Das macht zwei Dinge. Es lässt jeden wissen, dass Ihr Problem zu Ihrer Zufriedenheit gelöst wurde, und es gibt der Person, die Ihnen hilft, die Unterstützung zuzuschreiben. Eine vollständige Erklärung finden Sie [hier] (http://meta.stackexchange.com/a/5235). –