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 assigned to variables and passed around 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
(something PEP 8 explicitly recommends as it improves debugging). lambda
is really only a good idea when defining short functions that can be placed inline into the function call, for example key
functions for use with sorted()
.
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 and you are talking about cases where it's not reasonable to use a single expression.
(As a code golf note, this could also be done in less code as lambda x: 2-bool(x)
- of course, that's highly unreadable and a bad idea.)