请帮助我理解这是如何工作的。输出为4
a=4
b=7
x=lambda: a if 1 else b
lambda x: 'big' if x > 100 else 'small'
print(x())
答案 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
答案 2 :(得分:0)
让我为你翻译一下。
您为x
分配了一个没有参数的lambda
函数。因为1总是计算为true
,所以总是返回外部定义的变量a
,其值为4。
然后,您创建一个带有一个参数x
的lambda函数,您不会将其分配给变量/访问名称,因此它将永远丢失。
然后,调用函数x
,它始终返回a
。输出为4.