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
總結:python
1,global必須放在函數內,若是放在函數外將不起做用(如上面的紅色字體)。函數
2,某個函數若是想改變外部變量的值,就必須在函數內部的該變量前加global,若是有兩個函數func1,func2都想改變外部變量var1的值,就必須都在func1,func2裏面的var1前都加上global。字體
3,若是func2想獲取func1裏面的var1的最新值,就必須都在func1,func2裏面的var1前都加上global。spa