一个函数如果接收一个函数作为参数, 就是高阶函数.
其实高阶函数还有一种形式就是也可以把函数作为返回值返回
def foo():
x = 10
def temp():
nonlocal x
x += 10
return x
return temp
f = foo()
print(f())
print(f())
说明:
调用
foo()
得到的一个函数, 然后把函数赋值给变量f
, 这个时候f
和foo
内部的temp
其实指向了同一个函数对象.返回的函数每调用一次都会把
foo
的局部变量x
增加 10 .所以两次调用分别得到 20 和 30.返回访问了外部函数的局部变量或者全局变量的函数,这种函数就是闭包.