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从入门到精通(DAY 2)
Dec 20 Python
Python找出最小的K个数实例代码
Jan 04 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
python实现ID3决策树算法
Aug 29 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
python批量解压zip文件的方法
Aug 20 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
Python3如何使用tabulate打印数据
Sep 25 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
与数据库连接
2006/10/09 PHP
php正则校验用户名介绍
2008/07/19 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Python中偏函数用法示例
2018/06/07 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Django中FilePathField字段的用法
2020/05/21 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
python性能测试工具locust的使用
2020/12/28 Python
会计实习生自我鉴定
2013/12/12 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python