繁体   English   中英

lambda呼叫查询(python)

[英]lambda calling inquiry (python)

我终于了解了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放在括号上等同于调用它? 并在其旁边放置另一个打开/关闭括号,这意味着它是参数?

在第一个示例中,您正在打印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

Lambda定义了函数,但实际上并未调用它。 只是“ f”和“ f(x)”的区别。 更清晰的解决方案如下所示:

func = lambda x: x//2+9

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM