def fun():
if False:
x=3
print(locals())
print(x)
fun()
輸出和錯誤消息:Python的局部變量編譯原理
{}
---------------------------------------------------------------------------
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
我想知道Python解釋器是如何工作的。請注意,x = 3根本不運行,並且不應將其視爲局部變量,這意味着錯誤將爲「name'x'未定義」。但看看代碼和錯誤消息,情況並非如此。有人能解釋這種情況下編譯python解釋器的機制原理嗎?
可能的重複http://stackoverflow.com/q/7969949/3758972 –
這可能是相關的:[範圍規則簡述](http://stackoverflow.com/questions/291978/short-description-of-範圍規則) –
如果下面的答案之一解決了您的問題,您應該接受它(單擊相應答案旁邊的複選標記)。這有兩件事。它讓每個人都知道你的問題已經得到解決,讓你滿意,並且它可以幫助你幫助你。請參閱[此處](http://meta.stackexchange.com/a/5235)以獲取完整說明。 –