python基礎-區域性變數和全域性變數
阿新 • • 發佈:2020-11-22
全域性變數:作用域為整個pytion檔案,都可呼叫,為大家的公共情人。不使用global的時候本身第一層不能被修改,若為list,dict,內部元素可以修改,增加。使用global,想怎麼改就怎麼改。
區域性變數:在某個函式內部宣告的,只能在函式內部使用,如果超出使用範圍(函式外部),則會報錯。
1.優先尋找區域性變數,若本層不存在則尋找上一層的變數,本層的命令不會執行到往下一層函式的變數
#內部函式的變數不會執行 name='lyf' def test(): name ="wpq" def test_1(): name="ss" def test_1_1(): name="bb" #test_1_1沒被執行,name="bb"不會執行 print(name) test_1() test() print(name)
name='lyf' def test(): name="wpq" def test_1(): def test_1_1(): name="bb" print(name)#本層不存在name,尋找上一層name列印 test_1() test() print(name)
2.函式內修改全域性變數用global,global+變數,和變數賦值必須分兩行,寫在一起會報錯
name='lyf' def test(): global name name="wpq" def test_1(): name="ss" def test_1_1(): name="bb" #test_1_1沒被執行,name="bb"不會執行 print(name) test_1() test() print(name)
在函式內部,globel修改後,全域性變數就被修改,後面其它函式呼叫的global都是修改後的變數
name = 'lyf' def test():global name name = "wpq" print(name) def test_1(): print(name)#test先執行,全域性變數已經被修改,後執行test——1,輸出的是修改後的變數 test() test_1()
3.函式內不使用golbal,修改list,dict的元素
注意:list,dict本身不能被修改
name = ['lyf',1] dict_1={1:"a",2:"b"} def test(): name.append("aa") dict_1.update({3:"cc"}) test() print(name) print(dict_1)
4.為了區分全域性變數和區域性變數,一般全域性變數字母大寫,區域性變數字母小寫。
nonlocal——指定上一級變數