无法理解lambda函数

use*_*823 7 python lambda

功能究竟发生了什么:

lambda x: 10 if x == 6 else 1 
Run Code Online (Sandbox Code Playgroud)

我知道一些lambda函数做了什么,但我不习惯看到它们像这样写.我是任何形式的代码的菜鸟.

mar*_*r75 14

some_function = lambda x: 10 if x == 6 else 1
Run Code Online (Sandbox Code Playgroud)

语法糖是:

def some_function(x):
    return 10 if x == 6 else 1
Run Code Online (Sandbox Code Playgroud)

这意味着如果x == 6求值为True 则返回10 ,否则返回1.

就个人而言,我更喜欢def所有形式,除了最简单的情况,因为它允许多行函数,使得更清楚调用可调用函数涉及什么样的开销,使分析函数的闭包更简单,并打开心灵的新的python程序员到其他更复杂的代码对象(如类),可以在运行时轻松构建.


dan*_*van 2

由于 python 是一种具有函数式特性的优秀语言,因此您可以使用 lambda 表达式对函数进行一些方便的操作。你的例子相当于

if x == 6:
    return 10
else:
    return 1
Run Code Online (Sandbox Code Playgroud)

lambda如果您需要将一个简单函数作为参数传递给代码中某处的另一个函数,则函数非常有用。

  • 嗯,“Python 是一种函数式语言”有点夸张。它更像是一种具有功能特性的命令式语言。 (2认同)