for的循环注意事项
funcs = []
for i in range(10):
funcs.append(lambda: print(i))
funcs[2]()
这段代码的运行结果是9。
个人猜想生成lambda函数的时候“i”变量的指针被传入其中,而i变量又随着for循环的迭代而变化,因此最后生成的函数实际上都是一样的(内存地址不同,运行结果相同)。
但实际上我也不能完全解释清楚整个过程(绝对不是懒得研究),有想法的可以在下方留言a。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。