为什么我不能在没有括号的情况下调用lambda表达式?

时间:2014-08-21 00:55:12

标签: python lambda tuples

为了能够在函数对象返回的数字上加2,我需要调用它(当然),但我想知道为什么语法要求我使用括号。

使用:

x = 2 + (lambda: 4)()

不起作用:

x = 2 + lambda: 4()

似乎我正在称一个元组(显然,这是荒谬的):

()()
TypeError: 'tuple' object is not callable

我的意思是......这种语法有点神秘:

x = ((lambda: 1)(), (lambda: 2)(), (lambda: 3)())
print x[0] + x[1] + x[2]

1 个答案:

答案 0 :(得分:2)

由于优先权,它不起作用。如果您有以下内容怎么办:

def x(): return 3
lambda: x()

你的第二行应正确评估函数x的返回值,然后创建一个返回3的lambda。