为了能够在函数对象返回的数字上加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]
答案 0 :(得分:2)
由于优先权,它不起作用。如果您有以下内容怎么办:
def x(): return 3
lambda: x()
你的第二行应正确评估函数x
的返回值,然后创建一个返回3的lambda。