请帮我理解这是如何工作的。输出为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())
请帮我理解这是如何工作的。输出为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())
你x
总是等于4,因为它不带任何参数和if 1
总是True
。 然后你有没有分配给任何变量的lambda表达式,也没有在其他地方使用过。 最后,您打印出x
,如上所述,总是4
。
P.S.我强烈建议您阅读Using lambda FunctionsDive into Python
让我为您翻译。
您分配给x
a lambda
函数没有参数。由于1始终评估为true
,因此您总是返回外部定义的变量a
,其计算结果为4.然后,您创建一个带有一个参数x
的lambda函数,该函数不分配给变量/访问名称,因此它是永远失去。 然后,你调用函数x
,它总是返回a
。输出为4
首先,让我们删除此行,因为它不会做任何事情:
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
了解表达和陈述关键是要理解这样的代码之间的差异。
你的问题是什么? 是关于if - else还是关于lambda表达式? –
你应该阅读关于lambda函数。 – GAVD