get the name of lambda

Terry Reedy tjreedy at udel.edu
Sat Oct 16 17:15:15 CEST 2004


"George Yoshida" <ml at dynkin.com> wrote in message 
news:ckr59p$1epo$1 at dojima-n0.hi-ho.ne.jp...
> Just out of curiosity, is there any way to get the name of a
> lambda expression? Lambdas are anonymous functions, so it's a
> stupid idea to get the name of it. But if it's possible, how
> could I?
>
> Let's take a simple example:
>  foo = lambda:None
>
> foo.__name__(or foo.func_name) returns '<lambda>'.
> I'm looking for a way to return 'foo', instead of '<lambda>'.

Use 'def foo: return None' instead.  This is precisely why a 'name = lambda 
...' statement is inferior to a def statement.

[and in followup]
> I implemented a function in several ways(using recursion,
> lambda, etc) and benchmarked them. In that script, I needed
> to display function names, along with ellapsed time.

So use a def instead of lambda.  Only use lambda when you have an 
expression to return and *do not need* a name to display.  Python is not 
Lisp ;-)

Terry J. Reedy







More information about the Python-list mailing list