學習5: 閉包

閉包需知足三個條件: 1. 是嵌套函數;2. 內部函數使用了外部函數的變量;3. 外部函數返回內部函數閉包

例如1:函數

def fun1():
    a=1
    def fun2():
        b = a+10
        print b
    return fun2
print callable(fun1)
my_fun2 = fun1()
my_fun2()

例如2:spa

def fun1(a):
    def fun2(b):
        c = a+b
        print c
    return fun2
my_fun2 = fun1(3)
my_fun2(8)

例如3(注意點):code

def fun1(a):
    def fun2(b):
        a = a+b
        print a
    return fun2
my_fun2 = fun1(3)
my_fun2(8)

這段程序的本意是要經過在每次調用閉包函數時都對變量a進行遞增的操做,可是會出現找不到變量a的錯誤。blog

相關文章
相關標籤/搜索