Python中lambda表达式的优缺点及使用场景
什么是lambda表达式?
lambda 表达式是 Python 创建匿名函数的特殊语法. 或称 lambda 语法本身为 lambda 表达式,它返回的函数,我称之为 lambda 函数。或匿名函数。
Python 的 lambda 表示允许在一行代码中创建函数并传输。
看下面的代码:
website=["www.pythontab.com","bbs.pythontab.com","docs.pythontab.com"] defwordCount(string): returnlen(string) siteNameLength=map(wordCount,website) print(siteNameLength)
结果
[17,17,18]
上面的代码可以转换成 lambda 表达式表示:
website=["www.pythontab.com","bbs.pythontab.com","docs.pythontab.com"] siteNameLength=map(lambdastring:len(string),website) print(siteNameLength)
结果
[17,17,18]
lambda 表达式只是创建函数的一种特殊方法。 它们只包含一个句子, 并自动返回这个句子的结果。
经验丰富 Python 程序员看到lambda 在表达式中,他们知道他们只使用一个地方有效的函数, 而且只做一件事。
lamda 的优缺点
从上面的例子可以看出lambda 表达式可以写出非常简洁的代码,但缺点也很明显:难以理解,降低了可读性和性能。特别是 Python 新手。
以下lambda表达式:
lambda_list=lambdan:lambda_list(n-1)+(lambdax:x*(n-1),)ifnelse()
很难在短时间内理解代码的含义。
lamda缺点:
对很多 Python 对程序员来说, lambda 表达式是一种奇怪而奇怪的语法
lambda 函数本身缺乏名称和文档, 理解其功能的唯一方法是阅读代码
lambda 表达式只能包含一个句子, 因此,一些语言功能提高了可读性, 如元组拆包, 不能和它们一起使用
lambda 一般情况下,函数可以替换为标准库中已经存在的函数或函数 Python 内置的函数
lamda的优点:
代码简洁
不增加额外变量
lambda 表达式与命名函数的主要区别:
可立即传递(无变量)
内部只能包含一行代码
自动返回结果
既没有文档字符串, 也没有名称
lambda 使用场景
以下场景更适合使用 lambda 表达式的:
你要做的操作并不重要: 函数不值一个名字
使用 lambda 表达式比你能想到的函数名更容易理解代码
你确定没有函数能满足你的需求
你们团队的每个人都知道 lambda 表达式, 同意使用它们
总结
不提倡使用lambda, 除非你知道自己在做什么。在团队发展中, 易读代码很重要,有助于提高团队协调开发效率,降低沟通维护成本。