#用global改变函数内变量的作用域,使之变为全局变量
a=3
def g():
global a
a+=17
return a
print(g())
#提示:需要该函数重新赋值时用return,不需要时则不用return
#用nonlocal改变函数内变量的作用域,使之变为全局变量
def f():
a=3
def g():
nonlocal a
a+=17
g()
print(a+20)
f()
#提示:需要该函数重新赋值时用return,不需要时则不用return
区别:
函数套函数用nonlocal,函数无嵌套函数则用global。
理解:
假设:有一空间(一类)中包含有编程里的所有东西,令为x1空间。其中函数令为x2空间,而函数里的函数令为x3空间,
则使用规则为:当x2空间要用到x1空间当中的变量值时则使用global,当x3空间要使用x2当中的变量值时使用nonlocal。
综合来讲,global是全局变量,nonlocal是父函数的变量。
技巧:
1、尽量不要用相同变量名。
2、函数嵌套时不能同时用global,nonlocal两个函数。