In python, how can you write a lambda function taking multiple lines. I tried
d = lambda x: if x:
return 1
else
return 2
but I am getting errors...
解决方案
Use def instead.
def d(x):
if x:
return 1
else:
return 2
All python functions are first order objects (they can be passed as arguments), lambda is just a convenient way to make short ones. In general, you are better off using a normal function definition if it becomes anything beyond one line of simple code.
Even then, in fact, if you are assigning it to a name, I would always use def over lambda. lambda is really only a good idea when defining short key functions, for use with sorted(), for example, as they can be placed inline into the function call.
Note that, in your case, a ternary operator would do the job (lambda x: 1 if x else 2), but I'm presuming this is a simplified case.
(As a code golf note, this could also be done in less code as lambda x: bool(x)+1 - of course, that's highly unreadable and a bad idea.)