我正在看T.Scholak's gist
我将与Jupyter一起复制
def side_effecty_id(x):
print(x)
return x
让我们考虑
lambdas_0 = tuple((lambda x: x >= side_effecty_id(i)) for i in range(10))
tuple(l(5) for l in lambdas_0)
结果
9
9
9
9
9
9
9
9
9
9
(False, False, False, False, False, False, False, False, False, False)
而
lambdas_1 = tuple((lambda i: lambda x: x >= side_effecty_id(i))(i) for i in range(10))
tuple(l(5) for l in lambdas_1)
给予
0
1
2
3
4
5
6
7
8
9
(True, True, True, True, True, True, False, False, False, False)
我认为这是一个很好的例子。 为什么我们需要双λ? 我比较了lambdas_0和lambdas_1
<function __main__.<genexpr>.<lambda>(x)>
和
<function __main__.<genexpr>.<lambda>.<locals>.<lambda>(x)>,
<locals>
代表什么?