
高阶函数概述
高阶函数是指那些将其他函数作为参数传入或者作为返回值返回的函数。这种特性体现了函数式编程的精髓。函数式编程是一种高度抽象的编程范式。
一、高阶函数的体验
让我们从一些基础的函数开始体验:
1. 对数字求绝对值函数:abs()
例如,print(abs(-100)) 将输出 100。
2. 对数字进行四舍五入函数:round()
例如,print(round(1.89)) 将输出 2,而 print(round(3.3)) 将输出 3。
现在让我们体验高阶函数:对于任意两个数字,我们先进行某种操作后再求和。
方法1:只能进行一种固定的操作。
python
def sum_num(a, b):
return abs(a) + abs(b)
result = sum_num(19.9, -23.3) 输出结果为 43.2
方法2:我们可以通过高阶函数将任意函数作为参数传入。
python
def sum_num(a, b, f):
return f(a) + f(b)
result = sum_num(19.9, -23.3, round) 输出结果为 -3,这里我们对数字进行了四舍五入操作后再求和。
二、内置的高阶函数介绍
1. map() 函数:接受一个函数和一个序列作为参数,将函数应用到序列的每个元素上,并返回一个新的序列(在 Python 3 中是迭代器)。例如,我们可以使用 map() 函数计算列表中每个数字的平方。
示例:计算列表 list1 中每个数字的平方。
python
list1 = [1, 2, 3, 4, 5]
def func(a):
return a 2 返回 a 的平方值
result = map(func, list1) 返回 map 对象,可以使用 list() 函数将其转换为列表。转换后的结果为:[1, 4, 9, 16, 25]。
2. reduce() 函数:接受一个二元操作函数和一个序列作为参数,通过连续调用这个函数来减少序列中的元素数量。例如,我们可以使用 reduce() 函数计算列表中所有数字的和。注意,reduce 函数需要 functools 模块的支持。示例如下:计算列表 list1 中所有数字的和。计算结果为 15。
3. filter() 函数:接受一个函数和一个序列作为参数,通过函数过滤掉不符合特定条件的元素,返回一个 filter 对象。如果想要将其转换为列表,可以使用 list() 函数进行转换。例如,我们可以使用 filter() 函数过滤出奇数。示例如下:过滤列表 list1 中的偶数部分。转换后的结果为:[-2, 0, 2, 4, 6, 8, 10]。
