Python lambda函数无法以正确的方式工作

时间:2017-03-25 08:37:48

标签: python lambda

我是Python的菜鸟。这些是我的变量:

>>> y=1

>>> i=5

我使用lambda函数:

>>> (lambda y: y*i)(i)

>>> 25

如果y = 1且i = 5,为什么输出为25?

如果我使用数字:

>>> (lambda y: 1*i)(i)

>>> 5

这是正常的吗?为什么y在第一种情况下为5,在另一种情况下为1?

2 个答案:

答案 0 :(得分:2)

这些实际上是以正确的方式工作。您的第一个lambda表达式类似于:

def f(y):
    return y * i

正如您所看到的,y是函数的参数。它返回argument * i(无论i的值是多少)。

所以(lambda y: y*i)(i)就像调用f(i)一样。现在你已经将i的值设置为5.所以它基本上是f(5)并且返回值(5 * 5) - > 25。

第二个表达式类似于:

def g(y):
     return 1 * y

您正在i中传递g()i的值为5,所以就像调用g(5)并且它返回值(1 * 5) - > 5。

答案 1 :(得分:0)

您已通过i作为第一个参数。这意味着lambda中的y绑定到i中的值。然后将y乘以i。这导致5 * 5或25。