Lambda表达式是什么?
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)
lambda 表达式仅仅是建立函数的一个特殊方法。 它们只包含一条语句, 并自动返回这条语句的结果。
当经验丰富的 Python 程序员看到一个lambda 表达式时,他们知道他们正在使用一个仅在一个地方有效的函数, 而且只作一件事情。
Lamda的优缺点
从上面的例子能够看出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 表达式, 而且都赞成使用它们
总结
不提倡使用lambda, 除非你知道本身在干什么。在团队开发中, 一个良好易读的代码是很是重要的,有助于提高团队协同开发效率,减小沟通和维护成本。python