Scope in Python
本问题已经有最佳答案,请猛点这里访问。
我使用的是python2.7,但对于在python中定义作用域仍然很困惑。我无法解释为什么会发生这种情况。有人可以帮我。事先谢谢。
案例1:
1 2 3 4 5 | x = 1 def func(): print x func() |
结果:
1 | 1 |
案例2:
1 2 3 4 5 | x = 1 def func(): print x x = 9 func() |
结果:
1 | UnboundLocalError: local variable 'x' referenced before assignment |
当我在案例2中添加行
如果在方法中重新分配外部变量,则应使用全局:
1 2 3 4 5 6 | x = 1 def func(): global x print x x = 9 func() |
对于可变变量(如list或dict),当您只需要修改内部状态(list.append、list.pop)时,您不需要全局关键字。