Finding the name of a function while defining it

Abhas Bhattacharya abhasbhattacharya2 at gmail.com
Thu Dec 27 08:55:48 CET 2012


On Thursday, 27 December 2012 13:22:45 UTC+5:30, Chris Angelico  wrote:
> On Thu, Dec 27, 2012 at 6:46 PM, Abhas Bhattacharya
> 
> <abhasbhattacharya2 at gmail.com> wrote:
> 
> > [ a whole lot of double-spaced quoted text - please trim it ]
> 
> > If i call one() and two() respectively, i would like to see "one" and "two".
> 
> 
> 
> That completely goes against your idea of knowing at compile-time,
> 
> because the name "two" isn't anywhere around at that time.
> 
> 
> 
> There's no way to know what name was used to look something up. It
> 
> might not even have a name - the called function could well have been
> 
> returned from another function:
> 
> 
> 
> # foo.py
> 
> def indirection():
> 
>   return lambda: print
> 
> 
> 
> # bar.py
> 
> import foo
> 
> foo.indirection()()("Hello, world!")
> 
> 
> 
> What are the names of all the functions called here?
> 
> 
> 
> ChrisA

Yes, I get it that it may not be possible in complex cases (mostly using lambda functions). But in the simple case I mentioned, is it possible?



More information about the Python-list mailing list