我正在努力正确理解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?
非常感谢
答案 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")
times3
是multiplier
函数。因此,当您times3(2)
时,您正在做(这个特定的)multiplier(2)