函数作为函数的参数传入这样的函数称为高阶函数

  • 高阶函数是函数式编程的体现;
  • 函数式编程指的是高度抽象的编程范式

    高阶函数的思想

    ```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

  1. **函数式编程大量使用函数,减少代码的重复性**,可以做到程序短小,开发速度更快。
  2. <a name="k5lc3"></a>
  3. # 内置高阶函数
  4. <a name="GY9pu"></a>
  5. ## `map()`函数
  6. ```python
  7. map(func, lst)

将传入的函数变量func作用到列表lst变量的每个元素中,并返回一个新列表(Python2)或迭代器(Python3)

  1. list1 = [1, 2, 3, 4, 5]
  2. def func1(x):
  3. return x ** 2
  4. result = map(func1, list1)
  5. print(list(result)) # [1, 4, 9, 16, 25]

reduce()函数

  1. reduce(func, lst)

func函数中必须有两个参数每次**func**计算的结果,继续和序列中的下一个元素做累积累积方式由函数功能确定)计算,返回的是累积的结果

  1. # 计算list1序列中各个数字的累加和
  2. import functools
  3. list1 = [1, 2, 3, 4, 5]
  4. def func1(a, b):
  5. return a + b
  6. result = functools.reduce(func1, list1)
  7. print(result) # 15

filter()函数

  1. filter(func, lst)

函数用于过滤序列,过滤掉不符合条件的元素,返回的是一个**filter**对象

  • 如果要转换成列表,可以使用**list()**来转换。 ```python

    筛选出list1序列中的偶数

    import functools

list1 = [1, 2, 3, 4, 5]

def func1(x): return x % 2 == 0

result = filter(func1, list1) print(list(result)) # [2, 4]

  1. <a name="pgNuH"></a>
  2. # 部分内置函数
  3. <a name="eeKFZ"></a>
  4. ## `abs()`函数
  5. **完成对数字求绝对值计算**。
  6. ```python
  7. print(abs(-10)) # 10

round()函数

完成对数字的四舍五入计算

  1. print(round(1.2)) # 1
  2. print(round(1.5)) # 2