程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python的高阶函数是什么,有哪些高阶函数

hfteth 2025-06-03 22:04:44 技术文章 2 ℃

今天我们来讲讲python的高阶函数。一提到高阶这个词,有很多小伙伴就以为会很难,要打退堂鼓了。其实这里高阶并不是高级的意思。

常规函数通常以数据作为参数,并返回数据。而高阶函数就是可以把函数作为参数,或者返回值是函数。 高阶的意思,就是针对函数进行操作或返回。


根据这定义,我们就知道,只要满足以下两个条件任意一个的,都是高阶函数:

1. 参数里有一个或多个函数。

2. 返回一个或多个函数。


举个很简单的例子。

比如有个函数是计算正方形面积的。

def s(x):

return x*x


传入任意边长就能计算面积。而要计算单位正方形面积,边长传入1就行。


我们也可以定义一个专门进行单位操作的高阶函数,

def m(f):

return f(1)


这样,把s函数作为参数传给m,也就是m(s),就可以得到单位正方形的面积了。


这时有小伙伴可能会觉得,这样不是多此一举吗,太麻烦了。。我们这里只是举个例子来说明什么是高阶函数,而且你听我们前面说的,这个m函数是专门用来进行单位操作的,也就是,假如你还有其他函数,比如计算圆的面积的c函数,返回3.14乘与r的平方。这时你要得到单位圆的面积,也可以把这个c传给m,就可以了。


def c(r):

return 3.14 * r ** 2


square_area = m(s) # 计算单位正方形面积

circle_area = m(c) # 计算单位圆面积

print("单位正方形面积:", square_area)

print("单位圆面积:", circle_area)


通过这个例子,应该能理解高阶函数的含义了。在一些情况下使用高阶函数,可以极大的提升代码的灵活性和功能性。


python有些内置的高阶函数,比如我们前一个视频专门介绍的map函数就是个高阶函数,有兴趣的朋友可以看下我之前的视频。其他内置高阶函数比如:filter(), reduce() 等。另外还有sorted(), min(),max(), any(),all()等函数,可接受key函数参数,也是高阶函数。


以map函数为例,假设我们有一个列表[1, 2, 3, 4, 5],想要对列表中的每个元素都进行平方操作,使用map函数可以这样写:


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

result = list(map(lambda x: x ** 2, nums))

print(result)


在使用高阶函数时要注意,每个高阶函数对传入的函数和参数可能会有自己的要求,使用时要确保满足这些要求。比如我们前面这个例子,传给m的函数要求传入一个数值型参数,这里s和c函数都是传入一个数值型的。再比如map函数,要求传入的函数必须能接受一个或多个对象作为参数。


前面还说到有返回函数的高阶函数,通过这样的函数可以实现闭包。这视频我们主要是说高阶函数的概念,就不展开来说闭包了。


在适当的时候使用或者自定义高阶函数,可以让代码更简洁,提高函数的可复用性,这也是一种函数式的编程风格。能帮助开发者编写出更加优雅、高效的程序。

最近发表
标签列表