這樣改為什么不行
def count():
? ? fs = []
? ? for i in range(1, 4):
? ? ? ? def f(a):
? ? ? ? ? ? return a*a
? ? ? ? c=f(i)
? ? ? ? fs.append(c)
? ? return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
def count():
? ? fs = []
? ? for i in range(1, 4):
? ? ? ? def f(a):
? ? ? ? ? ? return a*a
? ? ? ? c=f(i)
? ? ? ? fs.append(c)
? ? return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
2015-10-30
舉報
2015-11-05
這里并沒有運行到 閉包,會直接運行處結果,f1,f2,f3 得到的就是整數,所以就不能調用了?print f1(), f2(), f3(),
2015-10-30
print f1, f2, f3
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
為什么參考代碼的最后輸出的時候把f1,f2,f3后面的()去掉之后就沒有輸出了?
為什么上面問題里面的代碼把括號去掉之后才能正確輸出,兩者除了閉包重數之外還有什么區別?