Python nonlocal與global關鍵字解析說明

高洛峰
發布: 2017-03-12 10:49:22
原創
2311 人瀏覽過

nonlocal

首先,要先明確 nonlocal 關鍵字是定義在閉包裡面的。請看以下程式碼:

x = 0
def outer():
    x = 1
    def inner():
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)
登入後複製

結果

# inner: 2
# outer: 1
# global: 0
登入後複製

現在,在閉包裡面加入nonlocal關鍵字進行宣告:

x = 0
def outer():
    x = 1
    def inner():
        nonlocal x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)
登入後複製

結果

# inner: 2
# outer: 2
# global: 0
登入後複製

#看到差別了麼?這是一個函數裡面再巢狀了一個函數。使用 nonlocal 時,就宣告了該變數不只在巢狀函數inner()裡面
才有效,而是在整個大函數裡面都有效。

global

還是一樣,看一個例子:

x = 0
def outer():
    x = 1
    def inner():
        global x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)
登入後複製

結果

# inner: 2
# outer: 1
# global: 2
登入後複製

global 是對整個環境下的變數起作用,而不是對函數類別的變數起作用。

以上是Python nonlocal與global關鍵字解析說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板