在循環(huán)中創(chuàng)建函數(shù)我試圖在循環(huán)中創(chuàng)建函數(shù):functions = []for i in range(3):
def f():
return i # alternatively: f = lambda: i
functions.append(f)問題是所有的函數(shù)最終都是相同的。這三個函數(shù)都返回2,而不是返回0、1和2:print([f() for f in functions])# expected output: [0, 1, 2]# actual output: [2, 2, 2]為什么會發(fā)生這種情況,我應(yīng)該怎么做才能得到分別輸出0、1和2的3種不同的函數(shù)?
2 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗 獲得超2個贊
i
i
2
).
def f():
def f(i=i):
def f(i=i): return i
i
i=i
i
i
i=i
def
call
f
def make_f(i): def f(): return i return f
f = make_f(i)
def
添加回答
舉報
0/150
提交
取消