简单谈谈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类参数self使用示例
Feb 17 Python
跟老齐学Python之折腾一下目录
Oct 24 Python
python之Character string(实例讲解)
Sep 25 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
python中删除某个元素的方法解析
Nov 05 Python
pycharm运行scrapy过程图解
Nov 22 Python
使用python+whoosh实现全文检索
Dec 09 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
windows安装python超详细图文教程
May 21 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
javascript 建设银行登陆键盘
2008/06/10 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
Python中生成器和yield语句的用法详解
2015/04/17 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
python放大图片和画方格实现算法
2018/03/30 Python
Python字典遍历操作实例小结
2019/03/05 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python简单区块链模拟详解
2019/07/03 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
德国网上超市:myTime.de
2019/08/26 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
护理自荐信范文
2013/10/05 职场文书
销售顾问的岗位职责
2013/11/13 职场文书
北京奥运会口号
2014/06/21 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
接收函
2019/04/22 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
如何理解及使用Python闭包
2021/06/01 Python
服务器间如何实现文件共享
2022/05/20 Servers