不,您不能直接调用它,因为它是的局部变量
make_adder。
您需要使用,
adder()因为
returnadder调用
adder时返回了函数对象
make_adder(5)。要执行此功能对象,您需要
()
def make_adder(x): def adder(y):return x+y return adder... >>> make_adder(5) #returns the function object adder<function adder at 0x9fefa74>
在这里您可以直接调用它,因为您可以访问它,因为它是由函数返回的
make_adder。返回的对象实际上称为
闭包,
因为即使函数
make_addr已经返回,
adder由它返回的函数对象仍然可以访问变量
x。在py3.x中,您还可以修改
xusing
nonlocal语句的值。
>>> make_adder(5)(10) 15
Py3.x示例:
>>> def make_addr(x): def adder(y): nonlocal x x += 1 return x+y return adder... >>> f = make_addr(5)>>> f(5) #with each call x gets incremented11>>> f(5)12#g gets it's own closure, it is not related to f anyhow. i.e each call to # make_addr returns a new closure.>>> g = make_addr(5) >>> g(5)11 >>> g(6)13



