python lambda的使用详解


Posted in Python onFebruary 26, 2021

1. lambda语法

     lambda argument_list: expression

     lambda是Python预留的关键字,argument_list(参数列表)和expression(关于参数的表达式)由用户自定义。

2. lambda使用简单示例

  • lambda x, y: x*y;函数输入是x和y,输出是它们的积x*y
  • lambda:None;函数没有输入参数,输出是None
  • lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)
  • lambda **kwargs: 1;输入是任意键值对参数,输出是1

3. lambda的四个用法

  • 将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数
add = lambda x, y:x+y
add(1,2)
>>>3
  • 将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换(我还不懂这个的意思)

例如,为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:time.sleep=lambda x:None。这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。例如,执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。

  • 将lambda函数作为其他函数的返回值,返回给调用者

函数的返回值也可以是函数。例如return lambda x, y: x+y返回一个加法函数。这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。对应的,将包含嵌套函数的函数称之为外部函数。内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础。

  • 将lambda函数作为参数传递给其他函数

部分Python内置函数接收函数作为参数。典型的此类内置函数有这些。

(1)filter函数。此时lambda函数用于指定过滤列表元素的条件。例如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]。

(2)sorted函数。此时lambda函数用于指定对列表中所有元素进行排序的准则。例如sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。

(3)map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。

(4)reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。例如reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是'1, 2, 3, 4, 5, 6, 7, 8, 9'。

另外,部分Python库函数也接收函数作为参数,例如gevent的spawn函数。此时,lambda函数也能够作为参数传入。

以上就是python lambda的使用详解的详细内容,更多关于python lambda的使用的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
详解python 发送邮件实例代码
Dec 22 Python
Python 迭代器与生成器实例详解
May 18 Python
python opencv之分水岭算法示例
Feb 24 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python学生管理系统学习笔记
Mar 19 Python
Django 配置多站点多域名的实现步骤
May 17 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
python解析yaml文件过程详解
Aug 30 Python
django框架两个使用模板实例
Dec 11 Python
python 制作本地应用搜索工具
Feb 27 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 #Python
详解Python openpyxl库的基本应用
Feb 26 #Python
解决python的空格和tab混淆而报错的问题
Feb 26 #Python
Python Spyder 调出缩进对齐线的操作
Feb 26 #Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 #Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 #Python
Python xlwings插入Excel图片的实现方法
Feb 26 #Python
You might like
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
PHP抽象类 介绍
2012/06/13 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
js实现简单计算器
2015/11/22 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python命名空间详解
2014/08/18 Python
Python中列表(list)操作方法汇总
2014/08/18 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
详解Python编程中包的概念与管理
2015/10/16 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
整改落实自查报告
2014/11/05 职场文书
工作态度不好检讨书
2015/05/06 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
检讨书格式
2019/04/25 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书