代码
def check():
list_0 = []
for i in range(5):
list_0.append(lambda x:i * x)
return list_0
r = check()
print(r[0](3))
print(r[1](3))
输出
12
12
原因
在函数的5次循环中,因为此处匿名函数返回的是函数名和函数体,所以里面的i只是一个字符i,这个i将在调用该匿名函数时进行赋值,而下面调用check函数时,i的值最后确定在4【在此期间,i的赋值经历了五次,分别为0,1,2,3,4】,所以i的值就是4,列表中的5个函数的i均是4(都是一个字符i,所以将同时赋值)