How to write python lambda with multiple lines?
How to write python lambda with multiple lines?
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 Im 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, thats highly unreadable and a bad idea.)
lambda
construct in Python is limited to an expression only, no statements are allowed
While keeping the above mentioned constraint, you can write an expression with multiple lines using backslash char, of course:
>>> fn = lambda x: 1 if x
else 2
>>> fn(True)
>>> 1
>>> fn(False)
>>> 2
How to write python lambda with multiple lines?
Heres a correct version of what you are trying to do:
d = lambda x: 1 if x else 2
But I am not sure why you want to do that.