Python 中 global、nonlocal的使用
1.在学习python过程中很重要的一点需要记住:如果在函数内部定义了跟全局变量同名的变量,那么该变量将是局部变量,而全局变量的引用在该函数范围内将失效。
x = 9 def a(): x = 10 print x #x在此处是局部变量。 a() #10,
x =9 def b(): x +=1 print x #x在此处是局部变量,全局变量的引用失效,所以会报变量在使用前没有赋值的错误。 b() #UnboundLocalError: local variable 'x' referenced before assignment
2. 使用global关键字,将函数内部的变量声明为全局变量。
X=88 def a(): global X X +=1 print X a() #89
X=88 def b(): global Y Y +=X print Y b() #UnboundLocalError: local variable 'state' referenced before assignment
def b(): global Y Y = 9 print Y b() # 9
即,全局变量也可以在函数内部声明。
3.nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量 (python 3.0 添加)
def make_counter(): count = 0 def counter(): nonlocal count count += 1 return count return counter
nonlocal 必须声明在外一层的def中,其他任何地方将会报错。