這里的lambda是什么作用?去掉了為啥不行
def count():
? ? fs = []
? ? for i in range(1, 4):
? ? ? ? def f(i):
? ? ? ? ? ? return lambda: i*i
? ? ? ? fs.append(f(i))
? ? return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
def count():
? ? fs = []
? ? for i in range(1, 4):
? ? ? ? def f(i):
? ? ? ? ? ? return lambda: i*i
? ? ? ? fs.append(f(i))
? ? return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
2018-10-04
舉報
2018-10-04
return lambda : i*i? 返回的是一個函數,并把函數存進列表,分別傳遞給f1, f2,f3,之后的f1(),f2(), f3()表示調用返回的lambda函數,而去掉lambda后返回的是一個值(即 i*i的值),此時f1 ,f2, f3為數值,數值無法被當做函數調用(即不存在? 1() 這種寫法)