if和else在python lambda表达式中

时间:2016-06-15 07:13:39

标签: python if-statement lambda

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

a=4
b=7

x=lambda: a if 1 else b
lambda x: 'big' if x > 100 else 'small'
print(x())

3 个答案:

答案 0 :(得分:3)

首先,让我们删除这一行,因为它没有做任何事情:

lambda x: 'big' if x > 100 else 'small'

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

让我们来看看剩下的东西:

a = 4
b = 7

x = lambda: a if 1 else b

print(x())

这里x成为一个函数,因为它包含代码。 lambda表单只能包含表达式,而不能包含语句,所以它必须使用if的表达形式,它是向后看的:

  

如果条件为else,则为true-result结果

在这种情况下,条件为1,它始终为true,因此函数x()的结果始终是a的值,在代码中分配给4。实际上,x()的行为如下:

def x():
    return a

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

答案 1 :(得分:0)

您的x始终等于4,因为它不需要参数,if 1始终为True。 然后你有lambda表达式,它没有分配给任何变量,也没有在其他地方使用过。 最后,您打印出x,如上所述,它始终为4

P.S。我强烈建议您阅读Dive into Python

中的Using lambda Functions

答案 2 :(得分:0)

让我为你翻译一下。

您为x分配了一个没有参数的lambda函数。因为1总是计算为true,所以总是返回外部定义的变量a,其值为4。 然后,您创建一个带有一个参数x的lambda函数,您不会将其分配给变量/访问名称,因此它将永远丢失。 然后,调用函数x,它始终返回a。输出为4.