简单谈谈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正则表达式re模块详解
Jun 25 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
python list排序的两种方法及实例讲解
Mar 20 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Python模块的加载讲解
Jan 15 Python
python的range和linspace使用详解
Nov 27 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
python APScheduler执行定时任务介绍
Apr 19 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新手上路(十)
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python中title()方法的使用简介
2015/05/20 Python
编写Python CGI脚本的教程
2015/06/29 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python简单区块链模拟详解
2019/07/03 Python
python dumps和loads区别详解
2020/02/04 Python
python字符串下标与切片及使用方法
2020/02/13 Python
Python表达式的优先级详解
2020/02/18 Python
python实现网页录音效果
2020/10/26 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
家佳咖啡店创业计划书
2013/12/27 职场文书
个人委托书
2014/07/31 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python