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实现一个简单的能够上传下载的HTTP服务器
May 05 Python
Python编写电话薄实现增删改查功能
May 07 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
tensorflow 变长序列存储实例
Jan 20 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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
获得Google PR值的PHP代码
2007/01/28 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
php修改数组键名的方法示例
2017/04/15 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
用js编写留言板
2020/03/17 Javascript
详解Vue之计算属性
2020/06/20 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
在python中bool函数的取值方法
2018/11/01 Python
python 实现倒排索引的方法
2018/12/25 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
写出一个方法实现冒泡排序
2016/07/08 面试题
在求职信中如何凸显个人优势
2013/10/30 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
办公室岗位职责范本
2015/04/11 职场文书
社区党务工作总结2015
2015/05/19 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android