求助 閉包問題
def count():
? ?fs = []
? ?for i in range(1, 4):
? ? ? ?def f(j):
? ? ? ? ? ?def g():
? ? ? ? ? ? ? ?return j*j
? ? ? ? ? ?return g
? ? ? ?r = f(i)
? ? ? ?fs.append(r)
? ?return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
在 r = f(i)處不理解 ? f(i) == g 而不是 g(),這個r是否等于 j*j ? 是不是r() 才等于j*j,fs.append(r)添加的是什么啊
測試如下
def f(i):
????def g():
????????return i*i
????return g
>>> f(1)
<function f.<locals>.g at 0x01106A08>
>>> f(1)()
1
>>> f(9)()
81
>>> q = f(8)
>>> q
<function f.<locals>.g at 0x01106A08>
2015-05-02
現在知道了 ? 上部分代碼最后print f1(), f2(), f3() ?有括號了.....哎。。。看代碼不仔細.以后留意