Lambda 函数调用

Tap*_*ose 2 python algorithm data-structures

以下是我似乎没有得到的代码片段。问题是如何让函数输出想要的结果(不说想要的结果是什么,我假设它打印的是 0 到 9)。

这是一个问题: 下面的代码片段打印出什么?我们如何修复匿名函数以达到我们期望的行为?

functions = []
for i in range(10):
    functions.append(lambda : i)

for f in functions:
    print(f())
Run Code Online (Sandbox Code Playgroud)

Iv4*_*v4n 5

在 Python 中,不会产生新的作用域 for loop

所以在 之后for i in range(10),变量i仍然存在,其值 == 9。并且 lambda 函数lambda : i访问变量 i

为了输出您想要的结果,您应该将变量作为循环中的函数参数传递

functions = []
for i in range(10):
    functions.append(lambda i=i: i)

for f in functions:
    print(f())
Run Code Online (Sandbox Code Playgroud)