Emile van Sebille
emile at fenx.com
Mon May 4 02:21:53 CEST 2009
On 5/3/2009 3:39 PM bearophileHUGS at lycos.com said...
> Sometimes I rename recursive functions, or I duplicate&modify them,
> and they stop working because inside them there's one or more copy of
> their old name.
> This happens to me more than one time every year.
> So I have written this:
> from inspect import getframeinfo, currentframe
> def SOMEVERYUGLYNAME(n):
> if n <= 1:
> return 1
> self_name = getframeinfo(currentframe()).function
> #self_name = getframeinfo(currentframe()) # older python
> # only if it's a global function
> #return n * globals()[self_name](n - 1)
> return n * eval(self_name + "(%d)" % (n - 1))
> assert SOMEVERYUGLYNAME(6) == 2*3*4*5*6
> Are there nicer ways to do that?
I've sometimes used classes like:
assert SOMEVERYUGLYNAME()(6) == 2*3*4*5*6
It's probably nicer (for some definition of nice), but I wouldn't say
More information about the Python-list