简单谈谈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实现QQ游戏大家来找茬辅助工具
Sep 14 Python
Python的Django框架中的表单处理示例
Jul 17 Python
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
python正则表达式之对号入座篇
Jul 24 Python
Python中extend和append的区别讲解
Jan 24 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
实现Python与STM32通信方式
Dec 18 Python
django实现模型字段动态choice的操作
Apr 01 Python
python安装读取grib库总结(推荐)
Jun 24 Python
python 写一个水果忍者游戏
Jan 13 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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
session在PHP大型web应用中的使用
2011/06/25 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
js 替换
2008/02/19 Javascript
JQuery 常用方法基础教程
2009/02/06 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
python中的yield使用方法
2014/02/11 Python
Python实现二分查找算法实例
2015/05/26 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
学python安装的软件总结
2019/10/12 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
银行介绍信范文
2014/01/10 职场文书
安全生产承诺书
2014/03/26 职场文书
建房协议书
2014/04/11 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
升职自荐信范文
2015/03/27 职场文书
校园运动会广播稿
2015/08/19 职场文书
利用Redis实现点赞功能的示例代码
2022/06/28 Redis