我不明白的地方是,到 print 这一行如何知道 x 是 local 还是 global 呢?到这一步还没有分析赋值语句,怎么会当做 local 来对待?
难道是先分析一遍建立符号表,然后再分析一遍进行语法分析?
In [1]: x = 10
In [2]: def func():
...: print(x)
...: x = 20
...:
In [3]: func()
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-3-08a2da4138f6> in <module>()
----> 1 func()
<ipython-input-2-84a4e5530b9a> in func()
1 def func():
----> 2 print(x)
3 x = 20
4
UnboundLocalError: local variable 'x' referenced before assignment