Python中的闭包 - 变量赋值

时间:2015-05-22 07:56:28

标签: python scope closures

当我在python中遇到闭包时,从下面的代码中,我不了解调用函数时为x和y分配的参数的值。在第1点,我们为x传递参数值5。然后在函数中将其分配给x。在第2点,我们将7传递给inc5,我的疑问在这里出现,值7应该再分配给x,但是它是如何分配给y的。

def makeInc(x):
    def inc(y):
        return y + x
    return inc

inc5 = makeInc(5) #Point 1
inc5(7) #Point 2

2 个答案:

答案 0 :(得分:2)

我无法理解为什么你认为7应该分配给x。外部函数makeInc返回内部函数inc,它是您分配给inc5的函数。因此inc5接受参数y,以及与值7绑定的内容。

答案 1 :(得分:1)

Point 1,您传递的变量inc5返回makeInc函数的返回结果,该函数将是另一个带有局部变量inc的函数x设置为5.然后,您调用此新函数并将7作为其唯一参数y传递。