网站首页 > 技术文章 正文
今天我们来讲讲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函数,要求传入的函数必须能接受一个或多个对象作为参数。
前面还说到有返回函数的高阶函数,通过这样的函数可以实现闭包。这视频我们主要是说高阶函数的概念,就不展开来说闭包了。
在适当的时候使用或者自定义高阶函数,可以让代码更简洁,提高函数的可复用性,这也是一种函数式的编程风格。能帮助开发者编写出更加优雅、高效的程序。
猜你喜欢
- 2025-06-03 这3个高级Python函数,不能再被你忽略了
- 2025-06-03 python组合函数不允许你还不会的 10 个高效技巧
- 2025-06-03 Python内置函数range(python内置函数大全表)
- 2025-06-03 你不得不知道的10个最危险的Python函数
- 2025-06-03 告别重复,打造你的代码工具箱:Python函数深度解析
- 2025-06-03 30天学会Python编程:6. Python函数编程
- 2025-06-03 python入门到脱坑 函数—函数的调用
- 2025-06-03 Python内置函数指南(python内置函数有哪些)
- 2025-06-03 PYTHON函数参数详解(python函数参数的类型)
- 2025-06-03 Python程序员都应该学习掌握的的25个最基本内置函数
- 263℃Python短文,Python中的嵌套条件语句(六)
- 262℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 256℃Python实现字符串小写转大写并写入文件
- 255℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 115℃原来2025是完美的平方年,一起探索六种平方的算吧
- 96℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 88℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)