python变量作用域
var1 = 123 def func(): var1 = 456 print(var1) func() #456 print(var1) #123
==================================================
var1 = 123 def func(): global var1 #变成了教室的黑板(信息透明共享) var1 = 456 print(var1) func() #456 print(var1) #456
global var1 #表明此处没有起到全局变量的作用 def func(): var1 = 456 print(var1) func() #456 print(var1) #NameError: name 'var1' is not defined
global var1 #表明此处没有起到全局变量的作用 var1 = 123 def func(): var1 = 456 print(var1) return var1 func() #456 print(var1) #123
var1 = 123 #这一行的全局变量也可以注释掉,不影响下面的代码 def func1(): global var1 #变成了教室的黑板(信息透明共享) var1 = 456 print(var1) func1() #456 print(var1) #456 def func2(): print(var1) func2() #456 def func3(): var1 = 333 print(var1) func3() #333 print(var1) #456 def func4(): global var1 #再次变成了教室的黑板(信息透明共享) print(var1) #456 var1 = 444 print(var1) #444 func4() print(var1) #444
总结:
1,global必须放在函数内,如果放在函数外将不起作用(如上面的红色字体)。
2,某个函数如果想改变外部变量的值,就必须在函数内部的该变量前加global,如果有两个函数func1,func2都想改变外部变量var1的值,就必须都在func1,func2里面的var1前都加上global。
3,如果func2想获取func1里面的var1的最新值,就必须都在func1,func2里面的var1前都加上global。