【发布时间】:2017-02-25 04:05:29
【问题描述】:
def fun():
if False:
x=3
print(locals())
print(x)
fun()
输出和错误信息:
{}
---------------------------------------------------------------------------
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 根本不运行,并且不应将其视为局部变量,这意味着错误将是“未定义名称'x'”。但是查看代码和错误消息,情况并非如此。有人能解释一下这种情况背后的python解释器编译的机制原理吗?
【问题讨论】:
-
如果以下答案之一解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道您的问题已得到您满意的解决,并为帮助您的人提供帮助。有关完整说明,请参阅here。
标签: python compilation interpreter