【发布时间】:2018-01-21 23:44:16
【问题描述】:
将全局或本地封闭函数分配给同名的局部变量时出现错误。下面的代码说明了这个问题,其中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
【问题讨论】:
-
总是函数有作用域并绑定到它的变量。refer this link
-
我在这里看不到范围界定问题。当首次引用
a时,没有a的本地定义,因此在您引用的答案中,它应该转到本地封闭的变量,然后是a所在的全局变量。
标签: python python-2.7