1. 程式人生 > >全域性變數、區域性變數、global關鍵字、nonlocal關鍵字

全域性變數、區域性變數、global關鍵字、nonlocal關鍵字

全域性變數定義與特徵
全域性變數一旦設定在整個.py檔案內都可以呼叫,頂頭寫,規範為變數名全部大寫。

NAME = "Alex"
def test():
	print(NAME)


test()

區域性變數定義與特徵
區域性變數只在某個子程式(函式)內可以被呼叫,函式結束後區域性變數記憶體被釋放,規範為小寫。

NAME = "Alex"
def test():
	NAME = "YY"
	print(NAME)


test()
print(NAME)

global語句
在某個函式的內部程式碼塊寫入 global變數名 的語句,表示此處引用全域性變數中的該變數,此時在該函式內對該變數進行修改將會將該修改作用到全域性的該變數。如果不用global結構則只可以對全域性變數進行修改(如果該全域性變數是可修改型別)。

NAME = "Alex"
def test():
	global NAME
	NAME = "YY"
	print(NAME)


test()
print(NAME)
NAME = ["MB", "YY", "Alex"]
def test():
	NAME.append("Lucky")
	print(NAME)


test()
print(NAME)

nonlocal語句
在某個子程式內使用 nonlocal變數名 的語句,表示此處表示此處引用上一級程式中的該變數,此時在該函式內對該變數進行修改將會將該修改作用到整個上一級的該變數。如果不用nonlocal結構則只可以對上一級變數進行修改(如果該上級變數是可修改型別)。

def test1():
    name = "YY"
    print(name)

    def test2():
        nonlocal name
        name = "Lucky"
        print(name)

    test2()
    print(name)


test1()
	
def test1():
    name = ["YY", "MB"]
    print(name)

    def test2():
        name.append("Lucky")
        print(name)

    test2(
) print(name) test1()