当前位置:首页>python>小白学python第60天之python中高阶函数

小白学python第60天之python中高阶函数

  • 2026-08-27 09:01:55
小白学python第60天之python中高阶函数

2.5

python中高阶函数

?

学前疑问

如果你的程序需要在运行时才决定执行哪一段逻辑,或者根据条件“组装”出一个新的行为,你觉得该如何实现?高阶函数提供了将逻辑“参数化”的能力,让程序变得更智能。

1

python中高阶函数

(1)什么是高阶函数

如何让代码更富弹性?

答案是:让逻辑本身成为参数。高阶函数能将一段行为(函数)像数据一样传递,这标志着思维方式从“如何做”转向“做什么”,是函数式编程高度抽象的体现。

(2)高阶函数的由来

在Python中,abs()函数可以完成对数字求绝对值计算。

① 正数的绝对值是它本身 

② 负数的绝对值是它的相反数

abs()返回的结果都是正数

abs(-10)  # 输出结果:10

round()函数可以完成对数字的四舍五入计算

round(1.2)  # 输出结果:1round(1.9)  # 输出结果:2

需求:任意两个数字,按照指定要求(① 绝对值 ② 四舍五入)整理数字后再进行求和计算。

def fn1(num1, num2):    returnabs(num1) + abs(num2)print(fn1(-10, 10))
def fn2(num1, num2):    returnround(num1) + round(num2)print(fn2(10.2, 6.9))

要求:我们能不能对以上进行简化,然后合并为同一个函数 => 设计思想(高阶函数)

def fn(num1, num2, f):    # f代表要传入的参数(参数是一个函数名,如abs或round)    returnf(num1) + f(num2)# 绝对值求和print(fn(-10, 10, abs))print(fn(10.2, 6.9, round))

(3)map()函数

map(func, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。

lst = [1, 2, 3]

func函数:求某个数的平方,如输入2返回4,输入3返回9

map(func, lst)返回结果[1, 4, 9]

def func(n):    return n ** 2# 定义一个列表list1 = [1, 2, 3]# 使用map对lst进行func函数操作list2 = list(map(func, list1))print(list2)

(4)reduce()函数

reduce(func, lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累加计算。> 注意:reduce()传入的参数func必须接收2个参数。

list1 = [1, 2, 3]

def func(a, b):

    return a + b

reduce(func, lst)则把列表中的每个元素放入func中进行加工,然后进行累加操作

import functools# 定义一个函数def func(a, b):    return a + b# 定义一个列表list1 = [10, 20, 30, 40, 50]sums = functools.reduce(func, list1)print(sums)

(5)filter()函数

filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象。如果要转换为列表, 可以使用 list() 来转换。

# 定义一个函数def func(n):    return n % 2 == 0# 定义一个序列list1 = [1,2,3,4,5,6,7,8]# 调用filter函数进行过滤操作result = filter(func, list1)print(list(result))

今日学习完毕,课后作业:

给定一个包含若干整数的列表 numbers = [12, 5, -8, 0, 21, -15, 7, -3],请依次完成以下操作,并打印结果:

(1)转换绝对值:使用 map()函数,将列表中的每个数字转换为其绝对值。

(2)过滤正数:使用 filter()函数,筛选出所有大于0的正数。

(3)计算乘积:使用 reduce()函数,计算过滤后列表中所有数字的乘积。

最新文章

随机文章