无法理解 lambda 函数 [重复]

Posted

技术标签:

【中文标题】无法理解 lambda 函数 [重复]【英文标题】:Trouble understanding lambda functions [duplicate] 【发布时间】:2013-03-11 05:24:35 【问题描述】:

函数中究竟发生了什么:

lambda x: 10 if x == 6 else 1 

我知道一些 lambda 函数的作用,但我不习惯看到它们这样写。我是任何形式的代码的菜鸟。

【问题讨论】:

【参考方案1】:
some_function = lambda x: 10 if x == 6 else 1

是语法糖:

def some_function(x):
    return 10 if x == 6 else 1

这意味着如果x == 6 计算结果为 True,它将返回 10,否则返回 1。

就个人而言,除了最简单的情况外,我更喜欢def 形式,因为它允许多行函数,更清楚调用可调用对象所涉及的开销,使分析函数的闭包更简单,并打开新 Python 程序员的思维,了解其他更复杂的代码对象(例如类),这些对象可以在运行时轻松构建。

【讨论】:

非常感谢。这完全有道理。 没问题!欢迎来到 SO!我们希望您坚持编程和 ***!请记住通过单击复选标记“接受”其中一个有用的答案。如果您打算继续使用 SO,它将有助于提升您作为“提问者”的声誉。【参考方案2】:

由于 python 是一种具有功能特性的优秀语言,您可以使用 lambdas 对函数进行方便的操作。 你的例子相当于

if x == 6:
    return 10
else:
    return 1

lambda 函数在您需要将一个简单函数作为参数传递给代码中某处的另一个函数时很有用。

【讨论】:

好吧,“python 是一种函数式语言”有点牵强。它更像是一种具有功能特性的命令式语言。 其他范式中足够多的特征可以称为“多范式”;像几乎所有主流语言一样。 谢谢。这真的很有帮助。

以上是关于无法理解 lambda 函数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 lambda 的 Python 列表理解 [重复]

lambda函数中的关闭变量[重复]

更改函数列表时出现意外结果(lambda)[重复]

C ++中的Lambda函数,参数和逻辑[重复]

如何传递和使用任意lambda函数作为参数[重复]

如何为我的 Lambda 函数创建可重复使用的 CloudFormation 模板?