lambda调用查询(python)

时间:2015-09-23 04:44:20

标签: python lambda

我终于理解了lambdas!或者我认为

为什么这不起作用:

示例1:

for x in range(18, 101):
    print("Man's age: ", x, "Women's age: ", lambda x:x//2+9(x))

然而这样做:

示例2:

for x in range(18, 101):
    print("Man's age: ", x, "Women's age: ", (lambda x:x//2+9)(x))

这是否意味着将lambda放在括号上相当于调用它?并在它旁边放置另一个打开/关闭括号表示它是它的参数?

2 个答案:

答案 0 :(得分:3)

在第一个示例中,您正在打印lambda函数定义

如果将其分配给变量并尝试打印它,则相同。

v  = lambda x:x//2+9(x)
print v
>>function <lambda> at 0x10c32aaa0

如果您想执行它,则需要执行v(x)

但是,由于9(x)语句正在尝试使用int调用函数,因此会出现错误。

使用它的正确方法

v  = lambda x:x//2+9
print v(2)
>>10

答案 1 :(得分:1)

Lambda定义了函数,但实际上并没有调用它。它只是&#34; f&#34;的区别。和&#34; f(x)&#34;。更清晰的解决方案如下:

func = lambda x: x//2+9

for x in range(18, 101):
    print("Man's age: ", x, "Women's age: ", func(x))