我不明白的地方是,到 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.