把函数作为函数的参数传入,这样的函数称为高阶函数。
- 高阶函数是函数式编程的体现;
- 函数式编程指的是高度抽象的编程范式。
高阶函数的思想
```python将两个数字进行整理(如:绝对值)后求和
常规函数实现
def func1(a, b): return abs(a) + abs(b)
print(func1(-1, 2)) # 3
高阶函数实现
def func2(a, b, f): return f(a) + f(b)
print(func2(-1, 2, abs)) # 3——f参数除了可以传abs,还可以传其他函数名,如round
**函数式编程大量使用函数,减少代码的重复性**,可以做到程序短小,开发速度更快。<a name="k5lc3"></a># 内置高阶函数<a name="GY9pu"></a>## `map()`函数```pythonmap(func, lst)
将传入的函数变量func作用到列表lst变量的每个元素中,并返回一个新列表(Python2)或迭代器(Python3)。
list1 = [1, 2, 3, 4, 5]def func1(x):return x ** 2result = map(func1, list1)print(list(result)) # [1, 4, 9, 16, 25]
reduce()函数
reduce(func, lst)
func函数中必须有两个参数。每次**func**计算的结果,继续和序列中的下一个元素做累积(累积方式由函数功能确定)计算,返回的是累积的结果。
# 计算list1序列中各个数字的累加和import functoolslist1 = [1, 2, 3, 4, 5]def func1(a, b):return a + bresult = functools.reduce(func1, list1)print(result) # 15
filter()函数
filter(func, lst)
函数用于过滤序列,过滤掉不符合条件的元素,返回的是一个**filter**对象。
list1 = [1, 2, 3, 4, 5]
def func1(x): return x % 2 == 0
result = filter(func1, list1) print(list(result)) # [2, 4]
<a name="pgNuH"></a># 部分内置函数<a name="eeKFZ"></a>## `abs()`函数**完成对数字求绝对值计算**。```pythonprint(abs(-10)) # 10
round()函数
完成对数字的四舍五入计算。
print(round(1.2)) # 1print(round(1.5)) # 2
