Lambda函数在Python中返回函数名而不是值

时间:2015-07-04 06:21:51

标签: python lambda

我很难理解python中的lambda函数语法。特别是,我不明白为什么以下代码不起作用:

def f(x):
    return lambda x:x**2

f(2)

我期望的输出是4,但实际输出如下:

<function __main__.<lambda>>

发生了什么事? 提前致谢

4 个答案:

答案 0 :(得分:8)

您需要使用()调用lambda:

In [1]: def f(x):
   ...:     return (lambda n:n**2)(x)
   ...: 

In [2]: f(3)
Out[2]: 9

或者将lambda分配给var:

In [3]: f=lambda x:x**2

In [4]: f(4)
Out[4]: 16

答案 1 :(得分:2)

f(2)返回lambda。那就是<function __main__.<lambda>>。请注意,lambda范围内的x与作为x的参数传入的f不同。所以你可以定义你的函数没有参数,它会有相同的结果。

要调用lambda,您可以执行f()(2)

答案 2 :(得分:1)

您需要调用lambda函数来获取结果。不知道你在做什么。

在你的情况下 -

f(2)(2)
>>> 4

如果您只想要f来引用lambda函数,那么请执行 -

f = lambda x:x**2
f(2)
>>>> 4

不要从函数中返回它。

答案 3 :(得分:1)

你做错了。
您的f函数返回lambda函数,需要调用该函数 所以要让它发挥作用 -

>>> f(0)(2)
      ^ This can be anything
4

尝试这样的事情 -

>>> f = lambda x:x**2
>>> f(2) 
4