1. 程式人生 > 實用技巧 >python基礎-區域性變數和全域性變數

python基礎-區域性變數和全域性變數

全域性變數:作用域為整個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——指定上一級變數