2016-06-15 263 views
0

请帮我理解这是如何工作的。输出为4if和else python lambda表达式

a=4 
b=7 

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

你的问题是什么? 是关于if - else还是关于lambda表达式? –

+1

你应该阅读关于lambda函数。 – GAVD

回答

0

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

P.S.我强烈建议您阅读Using lambda FunctionsDive into Python

0

让我为您翻译。

您分配给x a lambda函数没有参数。由于1始终评估为true,因此您总是返回外部定义的变量a,其计算结果为4.然后,您创建一个带有一个参数x的lambda函数,该函数不分配给变量/访问名称,因此它是永远失去。 然后,你调用函数x,它总是返回a。输出为4

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表达形式,它是向后看:

真实的结果,如果条件否则假结果

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

def x(): 
    return a 

了解表达陈述关键是要理解这样的代码之间的差异。