全局变量与局部变量两者的本质区别就是在于作用域,全局变量即在整个程序中,任何地方都可以访问。而局部变量,试着在函数内部声明的变量,当函数运行结束时,局部变量就会被内存释放。
例子:
1 name='zs' 2 def change(): 3 name='ls' 4 change() 5 print(name) #输出为:’zs' 函数内的name是一个局部变量,函数运行结束即消失
如果要修改全局变量,要在函数内部用关键字global声明。
1 name='zs' 2 def change(): 3 global name 4 name='ls' 5 change() 6 print(name) #输出为 ls
其实局部变量是有层次的,如果出现函数的嵌套,内层函数想调用外层的变量是,是不能用global声明的,因为外层的变量不叫全局变量。这时候如果想修改外层的变量,就得用到一个新的关键字:nonlocal
#强行使用global变量会报错,下面代码可以自己运行试试 def fun(): a = 3 def fun2(): global a a*= 2 print(a) return fun2() fun()
如果使用nonlocal就可以完美解决:
1 def fun(): 2 a = 3 3 4 def fun2(): 5 nonlocal a 6 a*= 2 7 print(a) 8 9 return fun2() 10 fun() #输出 6