嵌套范围和Lambda

时间:2010-01-05 05:48:49

标签: python lambda nested

def funct():
    x = 4
    action = (lambda n: x ** n)
    return action

x = funct()
print(x(2)) # prints 16

......我不太明白为什么2会自动分配给n?

2 个答案:

答案 0 :(得分:5)

nfunct返回的匿名函数的参数。完全等同于funct的定义是

def funct():
    x = 4
    def action(n):
        return x ** n
    return action

这种形式是否更有意义?

答案 1 :(得分:3)

它没有“自动”分配:它通过将其作为与n参数对应的实际参数传递,非常明确地分配并且 - 自动分配。设置x的复杂方式与x.__name__几乎相同(扣除def x(n): return 4**n和其他次要内省细节)。