小编Che*_*HEN的帖子

Python局部变量编译原理

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解释器编译的机制原理?

python interpreter compilation

7
推荐指数
2
解决办法
265
查看次数

标签 统计

compilation ×1

interpreter ×1

python ×1