Python Lambda副作用

时间:2018-08-30 06:08:24

标签: python

我正在看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>代表什么?

0 个答案:

没有答案