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…
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Use
definstead.All python functions are first order objects (they can be passed as arguments),
lambdais 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
defoverlambda.lambdais really only a good idea when defining shortkeyfunctions, for use withsorted(), 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.)