lambda表达式的使用优缺点是什么,什么时候用
Admin 2022-07-14 群英技术资讯 449 次浏览
lambda 表达式是 Python 中创建匿名函数的一个特殊语法. 我称 lambda 语法本身为 lambda 表达式,而它返回的函数我称之为 lambda 函数。或者称为匿名函数。
Python 的 lambda 表达式允许在一行代码中创建一个函数并传递。
看下面的代码:
website = ["www.pythontab.com", "bbs.pythontab.com", "docs.pythontab.com"] def wordCount(string): return len(string) siteNameLength = map(wordCount, website) print(siteNameLength)
结果:
[17, 17, 18]
上面的代码可以转化为 lambda 表达式表示:
website = ["www.pythontab.com", "bbs.pythontab.com", "docs.pythontab.com"] siteNameLength = map(lambda string: len(string), website) print(siteNameLength)
结果:
[17, 17, 18]
lambda 表达式仅仅是创建函数的一个特殊方法。 它们只包含一条语句, 并自动返回这条语句的结果。
当经验丰富的 Python 程序员看到一个lambda 表达式时,他们知道他们正在使用一个仅在一个地方有效的函数, 并且只做一件事情。
从上面的例子可以看出lambda 表达式可以写出非常简练的代码,但是缺点也非常明显:难于理解,降低了可读性和性能。特别是对于 Python 新手。
如下面的lambda表达式:
lambda_list = lambda n: lambda_list(n-1) + (lambda x: x * (n-1),) if n else ()
很难短时间明白代码的含义。
lamda缺点:
对很多 Python 程序员来说, lambda 表达式是一种古怪而又陌生的语法
lambda 函数本身缺少名称和文档, 意味着了解它们功能的唯一方式就是读代码
lambda 表达式只能包含一条语句, 因此某些提高可读性的语言功能, 如元组拆包, 不能与它们一起使用
lambda 函数通常可以被替换为标准库中已存在的函数或 Python 内置的函数
lamda优点:
代码简洁
不增加额外变量
lambda 表达式与命名函数的主要不同点:
可以立刻传递(无需变量)
在内部只能包含一行代码
自动返回结果
既没有文档字符串, 也没有名称
下面的场景是比较适合使用 lambda 表达式的:
你所要做的操作是不重要的: 函数不值得一个名称
使用 lambda 表达式比你所能想到的函数名称让代码更容易理解
你很确定还没有一个函数能满足你的需求
你团队的每个人都了解 lambda 表达式, 并且都同意使用它们
不提倡使用lambda, 除非你知道自己在干什么。在团队开发中, 一个良好易读的代码是非常重要的,有助于提升团队协同开发效率,减少沟通和维护成本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在玩python学习机器时,对于那种对随机性不太敏感的模型,理论上说可以不打乱。但敏感不敏感也跟数据量级,复杂度,算法内部计算机制都有关,目前并没有一个经纬分明的算法随机度敏感度列表。既然打乱数据并不会得到一个更差的结果,一般推荐的做法就是打乱全量数据。那怎么打乱呢?
这篇文章主要介绍了如何解决.cuda()加载用时很长的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python如何对文件进行重命名,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python如何获取多线程返回结果,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
首先如果柱状图中有中文,比如X轴和Y轴标签需要写中文,解决中文无法识别和乱码的情况,加下面这行代码就可以解决了:plt.rcParams['font.sans-serif']=['SimHei']
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008