嵌套范围和Lambda

3zz*_*zzy 3 python lambda nested

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

x = funct()
print(x(2)) # prints 16
Run Code Online (Sandbox Code Playgroud)

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

Dal*_*und 5

n是由返回的匿名函数的参数funct.完全相同的定义funct

def funct():
    x = 4
    def action(n):
        return x ** n
    return action
Run Code Online (Sandbox Code Playgroud)

这种形式是否更有意义?