flist = [] for i in range(3): def foo(x):
print (x + i ) flist.append(foo) for f in flist: f(2)
1、f(2)含义
2、看解释是说是因为当把函数加入flist列表里时,python还没有给i赋值,
只有当执行时,再去找i的值是什么,这时在第一个for循环结束以后,i的值是2,
所以以上代码的执行结果是4,4,4,没有看明白
flist.append(lambda x:print(x+0))
flist.append(lambda x:print(x+1))
flist.append(lambda x:print(x+2))
for f in flist:
f(2)
>>> 2 3 4