1. 程式人生 > >關於閉包的一些概念和誤區

關於閉包的一些概念和誤區

特點 關於 count() st2 turn 引用 局部變量 函數返回 urn

像這種內層函數引用了外層函數的變量(參數也算變量),然後返回內層函數的情況,稱為閉包(Closure)。

閉包的特點是返回的函數還引用了外層函數的局部變量,所以,要正確使用閉包,就要確保引用的局部變量在函數返回後不能變。

def count():
fs = []
for i in range(1, 4):
def test1(j):
def test2():
return j * j
return test2
fs.append(test1(i))
return fs

[f1, f2, f3] = count()
print f1(), f2(), f3()

def count():
fs = []
for i in range(1, 4):
def f():
return i*i
fs.append(f)
return fs

f1, f2, f3 = count()

關於閉包的一些概念和誤區