Any way for a function to refer to itself?

Joshua Marshall jmarshal at mathworks.com
Thu Feb 22 21:17:23 CET 2001


Lee, Rick <rickylee at americasm01.nt.com> wrote:
> I can't find any other way for a function or method to refer to itself
> than something like the following:

> def foo():
>     myself = foo   # only if foo is global
>     mydoc = myself.__doc__
>     myname = myself.__name__

> So it can be done this way, but:

> - only if the function name can actually be accessed from the current
> name space
> - if the function name changes, that first line inside this function
> also has to change

> Seems to me there should be a more "Pythonic" way of doing this.  Is
> there?

It might be unpleasant, but you can do something like:

  def fib(f, x):
     if x < 2: return 1
     return f(f, x-1) + f(f, x-2)

  print fib(fib, 10)



More information about the Python-list mailing list