简单谈谈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性能优化的20条建议
Oct 25 Python
Python实现模拟时钟代码推荐
Nov 08 Python
Python如何实现守护进程的方法示例
Feb 08 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
Django工程的分层结构详解
Jul 18 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
Mar 17 Python
Python必须了解的35个关键词
Jul 16 Python
python 字符串格式化的示例
Sep 21 Python
Django解决frame拒绝问题的方法
Dec 18 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
pytorch中的model=model.to(device)使用说明
May 24 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自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
php session的锁和并发
2016/01/22 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
python实现统计代码行数的小工具
2019/09/19 Python
python实现与redis交互操作详解
2020/04/21 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
服务承诺书怎么写
2014/05/24 职场文书
企业理念标语
2014/06/09 职场文书
党员作风建设整改方案
2014/10/27 职场文书
领导欢迎词范文
2015/01/26 职场文书
清洁工工作总结
2015/08/11 职场文书
php去除deprecated的实例方法
2021/11/17 PHP
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang