1. 程式人生 > >python3 閉包(一)

python3 閉包(一)

自由 java urn 條件 code oca 有一個 nonlocal javascrip

# python 中的閉包

n = 10 #定義全局作用域變量


def fn(): #形成閉包
    n = 100 #定義局部變量n

    def inner():
        nonlocal n
        n += 1 #這裏定義相同變量n無法調用上層作用中的變量,這裏區別於Javascript中當前作用域中如果沒有對應變量則會
               #則會想上層作用域查找變量,python3中則不會查找
               # python3 中新增nonlocal 關鍵字可以調用上層作用域中的變量
        print(n)

    inner()
    
return inner #返回內嵌函數的地址,從而形成閉包 #形成閉包的條件 #1、必須要有一個內嵌函數 #2、內嵌函數中要對自由變量的引用 #3、外部函數必須返回內嵌函數 t = fn() t() t() print(n)

python3 閉包(一)