当我在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
答案 0 :(得分:2)
我无法理解为什么你认为7应该分配给x。外部函数makeInc
返回内部函数inc
,它是您分配给inc5
的函数。因此inc5接受参数y
,以及与值7绑定的内容。
答案 1 :(得分:1)
在Point 1
,您传递的变量inc5
返回makeInc
函数的返回结果,该函数将是另一个带有局部变量inc
的函数x
设置为5.然后,您调用此新函数并将7作为其唯一参数y
传递。