【发布时间】:2016-12-23 09:52:12
【问题描述】:
我在lambda 后面放了几个(),Python 似乎忽略了它们而不是抛出错误。为什么?
我的代码是:
>>> lambda x: x ()()()()
<function <lambda> at 0x105ca7ed8>
>>> lambda x: x (1)(2)(dfdf)()
<function <lambda> at 0x105cae578>
【问题讨论】:
-
只有调用 lambda才会出错。
-
因为那是完全有效的 Python。例如,如果您传递了
class X: def __call__(self, *args, **kwargs): return self并且dfdf在范围内,它可能会起作用。 -
<function <lambda> at...应该是一个线索,表明您从中得到的只是一个尚未调用的函数。