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实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python发送email的3种方法
Apr 28 Python
python中的计时器timeit的使用方法
Oct 20 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
python中的函数递归和迭代原理解析
Nov 14 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
python如何调用字典的key
May 25 Python
Python-openCV开运算实例
Jul 05 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
清除输入框内的空格
2016/12/21 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
微信小程序自定义联系人弹窗
2020/05/26 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
浅谈python常用程序算法
2019/03/22 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
Delphi CS笔试题
2014/01/04 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
前台文员我鉴定
2014/01/12 职场文书
师德师风建设方案
2014/05/08 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书