python 高阶函数简单介绍


Posted in Python onFebruary 19, 2021

把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

1.体验高阶函数

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

abs(-10) # 10

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

round(1.2) # 1
round(1.9) # 2

需求:任意两个数字,按照指定要求整理数字后再进行求和计算。

方法1

def add_num(a, b):
  return abs(a) + abs(b)


result = add_num(-1, 2)
print(result) # 3

方法2

def sum_num(a, b, f):
  return f(a) + f(b)


result = sum_num(-1, 2, abs)
print(result) # 3

注意:两种方法对比之后,发现,方法2的代码会更加简洁,函数灵活性更高。

函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

2.内置高阶函数

2.1 map()

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

需求:计算list1序列中各个数字的2次方。

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


def func(x):
  return x ** 2


result = map(func, list1)

print(result) # <map object at 0x0000013769653198>
print(list(result)) # [1, 4, 9, 16, 25]

2.2 reduce()

reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。

注意:reduce()传入的参数func必须接收2个参数。

需求:计算list1序列中各个数字的累加和。

import functools

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


def func(a, b):
  return a + b


result = functools.reduce(func, list1)

print(result) # 15

2.3 filter()

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

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


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


result = filter(func, list1)

print(result) # <filter object at 0x0000017AF9DC3198>
print(list(result)) # [2, 4, 6, 8, 10]

以上就是python 高阶函数简单介绍的详细内容,更多关于python 高阶函数的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现DES加密解密方法实例详解
Jun 30 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
Python实现的端口扫描功能示例
Apr 08 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
Python中请不要再用re.compile了
Jun 30 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 #Python
python中最小二乘法详细讲解
Feb 19 #Python
python中scipy.stats产生随机数实例讲解
Feb 19 #Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 #Python
python+opencv实现车道线检测
Feb 19 #Python
python UIAutomator2使用超详细教程
Feb 19 #Python
Python实现曲线拟合的最小二乘法
Feb 19 #Python
You might like
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
Python实现基于权重的随机数2种方法
2015/04/28 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python实现求数列和的方法示例
2018/01/12 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
Python中GIL的使用详解
2018/10/03 Python
python实现两个文件夹的同步
2019/08/29 Python
Python 获取项目根路径的代码
2019/09/27 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
九年级家长会邀请函
2014/01/15 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
物流业务员岗位职责
2015/04/03 职场文书
思想品德课教学反思
2016/02/24 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL