天天看點

python 函數--閉包函數

一、閉包函數:

  在一個外函數中定義一個内函數,内函數裡運用了外函數的臨時變量,并且外函數的傳回值是内函數的引用。

二、執行個體:

def outer(a): #外函數
    b = 10  #臨時變量
    def inner():  #内函數
        print(a+b)
    return inner

if __name__ == "__main__":
    demo = outer(5)     #調用外函數傳入值
    demo()   #15    
#内部函數調用外部函數變量,相當于執行inner函數
    demo1 = outer(7)
    demo1()    #17      

三、閉包函數修改外函數局部變量:

nonlocal是python3中的文法

def outer(x):
    def inner(y):
        nonlocal x  #nonlocal選取全局變量。
        x += y
        return x
    return inner

a = outer(10)
print(a(10))
print(a(600))      

四、使用

  1、可以當成裝飾器使用

  2、實作單利模式

引用:https://www.cnblogs.com/Lin-Yi/p/7305364.html

轉載于:https://www.cnblogs.com/liubiaos/p/9289726.html