1、返回函数
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
def lazy_sum(*args):
def sum():
ax = 0
for n in args:
ax = ax + n
return ax
return sum
f = lazy_sum(1,2,3,4,5)
print(f)
>>><function lazy_sum.<locals>.sum at 0x101c6ed90>
t = f()
print(t)
>>>15
在lazy_sum函数内部定义了一个函数sum,sum调用外部函数lazy_sum的参数和变量,lazy_sum函数返回值为sum函数
闭包:当一个函数返回了一个函数后,其内部的局部变量还被新函数引用
使用闭包时,对外层变量赋值前,需要先使用nonlocal声明该变量不是当前函数的局部变量。
def inc():
x = 0
def fn():
nonlocal x
x = x + 1
return x
return fn
f = inc()
2、匿名函数:lambda函数
f=lambda x,y,z: x+y+z f(2,3,4)
冒号:前面的x,y,z表示函数的参数,x+y+z表达式就是函数的返回值