在为具有相同名称的本地变量分配全局或封闭函数本地时,我发现错误。下面的代码说明了此问题,其中f()
运行正常,而g()
引发错误。看起来python知道a
是在本地分配的,因此它表示对a
的所有引用现在都是本地的,甚至a
之前的引用实际上是在本地分配的。什么解释了这种行为?我正在运行Python 2.7.12 :: Anaconda 4.2.0(64位)。
In [18]: a = 1
...:
...: def f():
...: x = a
...: print x
...:
...: def g():
...: a = a
...: print a
...:
In [19]: f()
1
In [20]: g()
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-20-d65ffd94a45c> in <module>()
----> 1 g()
<ipython-input-18-f3d970bdaa2b> in g()
6
7 def g():
----> 8 a = a
9 print a
10
UnboundLocalError: local variable 'a' referenced before assignment