Python 命名空间的1点疑惑
Python 命名空间的一点疑惑
今天看了Python的命名空间的资料,也了解了一些,但是遇到下面这段代码如何解释?
函数 fun() 打印全局命名空间中的变量 i,OK
函数 fun2() 在其局部命名空间中创建变量 j,然后将全局命名空间中的变量 i 的值赋值给 j,也是OK
函数 fun3() 怎么就报错了,请高人解释一下,我刚接触Python,好多地方有疑惑,先谢谢了!
------解决方案--------------------
你在fun3里对 i 有赋值操作,它就认为这个函数作用域里的 i 是新的局部变量,那你在给 i 赋值之前就对其引用当然要报错了,15 16行换换
今天看了Python的命名空间的资料,也了解了一些,但是遇到下面这段代码如何解释?
函数 fun() 打印全局命名空间中的变量 i,OK
函数 fun2() 在其局部命名空间中创建变量 j,然后将全局命名空间中的变量 i 的值赋值给 j,也是OK
函数 fun3() 怎么就报错了,请高人解释一下,我刚接触Python,好多地方有疑惑,先谢谢了!
>>> i = 1
>>> def fun():
... print(i)
...
>>> fun()
1
>>> i = 1
>>> def fun2():
... j = i
... print(j)
...
>>> fun2()
1
>>> def fun3():
... j = i
... i = j
... print(i)
...
>>> fun3()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in fun3
UnboundLocalError: local variable 'i' referenced before assignment
------解决方案--------------------
你在fun3里对 i 有赋值操作,它就认为这个函数作用域里的 i 是新的局部变量,那你在给 i 赋值之前就对其引用当然要报错了,15 16行换换