Discuss / Python / 用lambda实现闭包,为什么上面那种写法不行,第二个可以呢?return lambda j:j*j不行呢?

用lambda实现闭包,为什么上面那种写法不行,第二个可以呢?return lambda j:j*j不行呢?

Topic source

weiwei

#1 Created at ... [Delete] [Delete and Lock User]

def count():

    def f(j):

        # 这种为什么不行呢?

        return lambda j: j * j

        # 这种写法可以  return lambda x=j:x*j

    fs = []

    for i in range(1, 4):

        fs.append(f(i))  # f(i)立刻被执行,因此i的当前值被传入f()

    return fs

f1, f2, f3 = count()

print(f1())

print(f2())

看下一节匿名函数,表达方式是:return lambda: j * j


  • 1

Reply