python lambda 表达式中的 if 和 else

Pra*_*een 1 python lambda if-statement

请帮助我理解这是如何工作的。输出为4

a=4
b=7

x=lambda: a if 1 else b
lambda x: 'big' if x > 100 else 'small'
print(x())
Run Code Online (Sandbox Code Playgroud)

cdl*_*ane 5

首先,让我们删除这一行,因为它不执行任何操作:

lambda x: 'big' if x > 100 else 'small'
Run Code Online (Sandbox Code Playgroud)

lambda表达式已定义但从未被调用。它的参数也被调用这一事实x与代码的其余部分无关。

让我们看看还剩下什么:

a = 4
b = 7

x = lambda: a if 1 else b

print(x())
Run Code Online (Sandbox Code Playgroud)

这里x成为一个函数,因为它包含代码。该lambda形式只能包含表达式,不能包含语句,因此必须使用if向后查找的表达式形式:

如果条件为真,则结果为假,否则结果为假

在本例中,条件为1,它始终为真,因此函数的结果x()始终是 的值a,在代码的前面分配给 4。实际上,x()其行为如下:

def x():
    return a
Run Code Online (Sandbox Code Playgroud)

理解表达式语句之间的差异是理解此类代码的关键。