Generating functions inside loop with lambda expression in python

前端 未结 6 625
眼角桃花
眼角桃花 2020-11-30 08:37

If I make two lists of functions:

def makeFun(i):
    return lambda: i

a = [makeFun(i) for i in range(10)]
b = [lambda: i for i in range(10)]
6条回答
  •  忘掉有多难
    2020-11-30 09:11

    Lambdas in python share the variable scope they're created in. In your first case, the scope of the lambda is makeFun's. In your second case, it's the global i, which is 9 because it's a leftover from the loop.

    That's what I understand of it anyway...

提交回复
热议问题