全局變量與局部變量兩者的本質區別就是在於作用域,全局變量即在整個程序中,任何地方都可以訪問。而局部變量,試着在函數內部聲明的變量,當函數運行結束時,局部變量就會被內存釋放。
例子:
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
