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中的作用域规则详解
Jan 30 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
基于python实现学生管理系统
Oct 17 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
python和go语言的区别是什么
Jul 20 Python
python 中关于pycharm选择运行环境的问题
Oct 31 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
php,不用COM,生成excel文件
2006/10/09 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
Python3爬楼梯算法示例
2019/03/04 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
高二学生评语大全
2014/04/25 职场文书
广播体操比赛口号
2014/06/10 职场文书
暑假学习心得体会
2014/09/02 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技