我最近开始学习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表达式来实现我想要的功能呢?
答案 0 :(得分:2)
sum_double = lambda a, b: a+b if a != b else (a+b)*2
lambda
本身定义了一个函数。 <{1}}不是必需的。
在您的情况下,会打印由返回的函数def
和a
组成的元组。
答案 1 :(得分:2)
好吧,你没有调用b
函数,因此返回值是定义的lambda
函数的元组以及lambda
和a
的值
更改它以在返回之前调用lambda,同时向其提供参数:
b
它运作得很好:
return (lambda a, b: a+b if a != b else (a+b)*2)(a, b)