How to print lambda result ?
Ron.Barak at lsi.com
Tue Jan 20 13:34:04 CET 2009
Thanks Tino: your solutions without the lambda work nicely.
What I still don't understand is why the print does not execute the lambda and prints the result, instead of printing the lambda's object description.
From: Tino Wildenhain [mailto:tino at wildenhain.de]
Sent: Tuesday, January 20, 2009 14:22
To: Barak, Ron
Cc: python-list at python.org
Subject: Re: How to print lambda result ?
Barak, Ron wrote:
> Wanting to print the correct plural after numbers, I did the following:
> for num in range(1,4):
> string_ = "%d event%s" % (num,lambda num: num > 1 and "s" or "")
> print string_
> However, instead of getting the expected output:
> 1 event
> 2 events
> 3 events
> I get:
> 1 event<function <lambda> at 0x00AFE670>
> 2 event<function <lambda> at 0x00AFE670>
> 3 event<function <lambda> at 0x00AFE6B0>
lambda creates a function so this is the result you are seeing. You would need to call the function to get your result.
(num,(lambda n: n >1 and "s" or "")(num))
which is just a quite useless application of lambda :-)
(num,num >1 and "s" or "")
(num,"s" if num >1 else "")
in python > 2.5
or in python <3.0:
More information about the Python-list