为什么返回此lambda表达式会导致字符串?

时间:2016-07-22 20:29:31

标签: python python-3.x lambda

我最近开始学习Python 3.5.1,目前正在尝试使用SELECT * FROM users u where rowid = (select max(rowid) from users u1 where u.email=u1.email); 表达式。我尝试在下面设置简单的方法。

lambda

它应该做的就是返回def sum_double(a, b): return lambda a, b: a+b if a != b else (a+b)*2, a, b a的总和,如果b等于a则返回两倍,但我得到的是输出看起来像这样。

代码:

b

输出:

print(sum_double(1, 2))
print(sum_double(2, 3))
print(sum_double(2, 2))

我这样做错了吗?为什么会发生这种情况,如果可能的话,我将如何使用lambda表达式来实现我想要的功能呢?

2 个答案:

答案 0 :(得分:2)

sum_double = lambda a, b: a+b if a != b else (a+b)*2

lambda本身定义了一个函数。 <{1}}不是必需的。

在您的情况下,会打印由返回的函数defa组成的元组。

答案 1 :(得分:2)

好吧,你没有调用b函数,因此返回值是定义的lambda函数的元组以及lambdaa的值

更改它以在返回之前调用lambda,同时向其提供参数:

b

它运作得很好:

return (lambda a, b: a+b if a != b else (a+b)*2)(a, b)