Python 为什么我能';不调用没有括号的lambda表达式?

Python 为什么我能';不调用没有括号的lambda表达式?,python,lambda,tuples,Python,Lambda,Tuples,为了能够在函数对象返回的数字上加上2,我需要调用它(当然),但我想知道为什么语法要求我使用括号 作品: x = 2 + (lambda: 4)() 不起作用: x = 2 + lambda: 4() 似乎我在调用一个元组(这显然是荒谬的): 我是说。。这种语法有点晦涩: x = ((lambda: 1)(), (lambda: 2)(), (lambda: 3)()) print x[0] + x[1] + x[2] 因为优先权的关系,它不起作用。如果您有以下情况会怎样: def x():

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

作品:

x = 2 + (lambda: 4)()
不起作用:

x = 2 + lambda: 4()
似乎我在调用一个元组(这显然是荒谬的):

我是说。。这种语法有点晦涩:

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

因为优先权的关系,它不起作用。如果您有以下情况会怎样:

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

第二行应该正确计算函数
x
的返回值,然后创建一个lambda,返回运算符的3.

优先级。这似乎与原始代码不同<代码>(lambda:4)(正在创建一个lambda函数,该函数将返回4并调用它。第二行只创建lambda函数,不调用它。
def x(): return 3
lambda: x()