close
funs = []
for c in range(3):
a = lambda x: x + c
funs.append(a)
for f in funs:
print(f(1))
認為結果會是
1
2
3
但是實際上輸出卻為
3
3
3
這是為什麼, 因為 lamdba 為 runtime binding, 而非 definition time binding.
若要輸出結果為預期的
3
3
3
將程式改成如下
funs = []
for c in range(3):
a = lambda x, t=c: x + t
funs.append(a)
for f in funs:
print(f(1))
文章標籤
全站熱搜