我终于理解了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放在括号上相当于调用它?并在它旁边放置另一个打开/关闭括号表示它是它的参数?
答案 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))