閉包需知足三個條件: 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