简单谈谈python中的lambda表达式


Posted in Python onJanuary 19, 2018

最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下

1.lambda是什么

举个简单的例子:

func = lambda x: x*x

def func(x):
 return x*x

两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平方,代码会是什么样的,

def func(x):
  return x*x
map(func, [i for i in range(10)])
map(lambda x: x*x, [i for i in range(10)])

对比之下,效果还是显而易见。首先func函数的功能十分简单,而且很有可能只使用这一次,所以说我们在这里定义了一个功能简单、使用频次不高的函数。在这个例子中,使用lambda创建匿名函数不但不会影响代码的可读性,还能精简代码,减少不必要的函数调用。其实这种场景很常见,我们需要一个简单的单行函数,做一件简单的事,我们甚至连函数的名字都无需在意,此时lambda就是我们不错的选择。

2.是否使用lambda

lambda定义了一个匿名函数,使用它并不会带来代码执行效率的提升。lambda通常与map,reduce,filter在遍历列表时配合使用,但是一味的追求lambda的使用,对代码可读性往往带来灾难性的后果。python对lambda有着严苛的约束,毕竟它只能由一条表达式组成。lambda很方便不假,但是如果使用过度,程序的逻辑性看起来就不那么清晰,毕竟每个人对抽象的理解是不同的。

如果一个列表生成式,仅使用for,if,in就能实现,我不会使用lambda

如果函数不足够简单,涉及到循环等复杂逻辑,我会定义函数,让代码更具可读性,此时我不会使用lambda

在我看来,lambda的存在是为了减少单行函数的定义,所以只用来代替单行函数的定义就足够了。

Python 相关文章推荐
Python笔记(叁)继续学习
Oct 24 Python
python中enumerate的用法实例解析
Aug 18 Python
python处理二进制数据的方法
Jun 03 Python
python实现在控制台输入密码不显示的方法
Jul 02 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Python 面向对象部分知识点小结
Mar 09 Python
Python装饰器的应用场景代码总结
Apr 10 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 Python
python使用logging模块发送邮件代码示例
Jan 18 #Python
zookeeper python接口实例详解
Jan 18 #Python
Python获取当前函数名称方法实例分享
Jan 18 #Python
Python AES加密实例解析
Jan 18 #Python
快速了解python leveldb
Jan 18 #Python
Python实现动态图解析、合成与倒放
Jan 18 #Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 #Python
You might like
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python读取文件名并改名字的实例
2019/01/07 Python
Python中函数参数匹配模型详解
2019/06/09 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
python 命名规范知识点汇总
2020/02/14 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
天猫精选:上天猫,就够了
2016/09/21 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
大学生活动策划方案
2014/02/10 职场文书
少年闰土教学反思
2014/02/22 职场文书
建筑管理专业求职信
2014/07/28 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
大学生实习推荐信
2015/03/27 职场文书
装修公司管理制度
2015/08/05 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android