def fun():
if False:
x=3
print(locals())
print(x)
fun()
Run Code Online (Sandbox Code Playgroud)
输出和错误消息:
{}
---------------------------------------------------------------------------
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
Run Code Online (Sandbox Code Playgroud)
我想知道python解释器是如何工作的.请注意,x = 3根本不运行,并且不应将其视为局部变量,这意味着错误将是"名称'x'未定义".但是查看代码和错误消息,情况并非如此.谁能解释一下这种情况背后的python解释器编译的机制原理?