*python只会在模块、类和函数中引入新的作用域。
*Python首先在函数的本地作用域中查找变量,未找到时会继续在全局作用域和内置作用域中查找变量
code.1 和 code.2中是非常简单的例子。
code.1
1 i = 0 2 def f(): 3 i = 1 4 print i # 1 5 6 f() 7 print i # 0
code.2
1 i = 0 2 def f(): 3 print i # 0 4 f()
* 在Python中,使用一个变量之前不必预先声明它,但是在真正使用它之前,它必须已经绑定到某个对象;而名字绑定将在当前作用域中引入新的变量,同时屏蔽外层作用域中的同名变量,不论这个名字绑定发生在当前作用域中的哪个位置。
如code.3中的情况,抛出异常
code.3
1 i = 0 2 def f(): 3 print i #UnboundLocalError: local variable 'i' referenced before assignment 4 i = 0 5 f()
参考(搬运):
http://www.cnblogs.com/frydsh/archive/2012/08/12/2602100.html