引子:函数加括号代表调用该函数,而不加括号代表函数本身(函数名)
例如:
#求绝对值内置函数abs >>>abs(-10) #调用函数 10 #返回调用结果 >>>abs #函数本身 <built-in function abs> #返回函数本身
高阶函数定义:
变量可以指向函数,函数的参数能接收变量,那么一个函数可以接收另一个函数作为参数,这种函数就叫做高阶函数
n = 1 def func1(x,y): return x+y def func2(x): return x f = func2 #变量指向函数本身,而不是调用函数 f(n) #函数接收变量,此时f()就等同于func2() f(func1(1,2)) #一个函数接收另一个函数作为参数 print(f(func1(1,2))) #结果 3 #func2()就叫高阶函数
函数名其实也是变量,如果给函数名赋值,那在后面就无法调用该函数,所以绝对不能这么干
>>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ‘int‘ object is not callable
总结:
只需要满足以下任意一个条件,就是高阶函数:
1、一个函数接收另外一个或多个函数本身作为参数
2、函数return返回另一个函数本身
1 def f(x): 2 return abs,x #返回abs函数名,就是返回abs函数本身 3 4 #f()也是高阶函数