高阶函数就是把函数名(函数名本身也是变量)作为参数传入另外的函数中计算,传入的函数,可以是系统函数,也可以是自定义函数,如下:

def AddAbs(x,y,f):
return f(x)+f(y)


z = AddAbs(-10,10,abs)

print(z)


def TestF(t):
return t * t

z = AddAbs(-10,10,TestF)

print(z)

运行结果:

============================= RESTART: E:/abs.py =============================
20
200

两个高阶函数:map和reduce

import functools
# from functools import reduce
list1 = [1,2,3,4,5,6]

def SquL(x):
return x * x

def AddL(x,y):
return x + y

print(list1)
new_list1 = map(SquL,list1)
print(new_list1)
print(list(new_list1))

new_str1 = functools.reduce(AddL,list1)
print(new_str1)

 运行结果:

============================= RESTART: E:/abs.py =============================
[1, 2, 3, 4, 5, 6]
<map object at 0x000001C0627BDFD0>
[1, 4, 9, 16, 25, 36]
21

Map其实就是建立一种映射关系。map有两个输入参数,一个是传入的函数(映射关系建立的函数),另外一个是生成式(映射的结果),比如像列表。廖雪峰网站上说,map如果传入一个列表,会返回一个新的列表,但是我觉得说的有问题,可以看到上面的代码,如果直接打印new_list1是打印不出来的,还需要加一个list()函数转换一下。

reduce一种迭代关系,前面两个元素的结果充当下一轮的两个元素的其中一个,依次类推。

参考:​​https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000​