把函数作为函数的参数传入,这样的函数称为高阶函数。
- 高阶函数是函数式编程的体现;
- 函数式编程指的是高度抽象的编程范式。
高阶函数的思想
```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()`函数
```python
map(func, lst)
将传入的函数变量func
作用到列表lst
变量的每个元素中,并返回一个新列表(Python2)或迭代器(Python3)。
list1 = [1, 2, 3, 4, 5]
def func1(x):
return x ** 2
result = map(func1, list1)
print(list(result)) # [1, 4, 9, 16, 25]
reduce()
函数
reduce(func, lst)
func
函数中必须有两个参数。每次**func**
计算的结果,继续和序列中的下一个元素做累积(累积方式由函数功能确定)计算,返回的是累积的结果。
# 计算list1序列中各个数字的累加和
import functools
list1 = [1, 2, 3, 4, 5]
def func1(a, b):
return a + b
result = 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()`函数
**完成对数字求绝对值计算**。
```python
print(abs(-10)) # 10
round()
函数
完成对数字的四舍五入计算。
print(round(1.2)) # 1
print(round(1.5)) # 2