我是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?
答案 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。