我很难理解python中的lambda函数语法。特别是,我不明白为什么以下代码不起作用:
def f(x):
return lambda x:x**2
f(2)
我期望的输出是4,但实际输出如下:
<function __main__.<lambda>>
发生了什么事? 提前致谢
答案 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