Python中lambda表达式的优缺陷及运用场景

lambda表达式是什么?

lambda 表达式是 Python 中创立匿名函数的一个特别语法. 我称 lambda 语法自身为 lambda 表达式,而它回来的函数我称之为 lambda 函数。或许称为匿名函数。

Python 的 lambda 表达式答应在一行代码中创立一个函数并传递。

看下面的代码:

website = ["www.vztug.com", "bbs.vztug.com", "docs.vztug.com"]
def wordCount(string):
    return len(string)
siteNameLength = map(wordCount, website)
print(siteNameLength)

成果:

[17, 17, 18]

上面的代码能够转化为 lambda 表达式表明:

website = ["www.vztug.com", "bbs.vztug.com", "docs.vztug.com"]
siteNameLength = map(lambda string: len(string), website)
print(siteNameLength)

成果:

[17, 17, 18]

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, 除非你知道自己在干什么。在团队开发中, 一个杰出易读的代码是十分重要的,有助于提高团队协同开发功率,削减交流和保护本钱。


上一篇: Python2 和 Python3 的差异及兼容技巧
下一篇:Python 代码混杂和加密技能

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854