了解功能闭包

时间:2014-12-11 13:01:54

标签: python

我正在努力正确理解Function闭包。例如,在下面的代码中,我不清楚函数如何在语句times3(2)中知道x=2?此外,在阅读文档后,我仍然无法完全理解闭包的目的。

def make_multiplier_of(n):
    def multiplier(x):
        return x * n
    return multiplier

times3 = make_multiplier_of(3)
times3(2) #How does the function know that x=2 here?

非常感谢

1 个答案:

答案 0 :(得分:2)

当您致电make_multiplier_of(3)时,该功能正在返回multiplier,以便

def multiplier(x):
    return x*3

因此times3 = make_multipiler(3)将此特定multiplier函数分配给times3。与您myLength=len myLength时的len功能相同,您可以调用myLength("foo")

因此,{p> times3multiplier函数。因此,当您times3(2)时,您正在做(这个特定的)multiplier(2)