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之玩转字符串(2)更新篇
Sep 28 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
Python中的ceil()方法使用教程
May 14 Python
Python进程间通信之共享内存详解
Oct 30 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
Nov 14 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Python装饰器知识点补充
May 28 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
通过Python实现一个简单的html页面
May 16 Python
Python pip 常用命令汇总
Oct 19 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数据库密码的找回的步骤
2011/01/12 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
Javascript算符的优先级介绍
2013/03/20 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
Django实现跨域请求过程详解
2019/07/25 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python线程优先级队列知识点总结
2021/02/28 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
品质口号大全
2014/06/17 职场文书
家长会欢迎标语
2014/06/24 职场文书
水知道答案观后感
2015/06/08 职场文书
如何在Python中创建二叉树
2021/03/30 Python
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫