Function calls and reflection

holger krekel pyth at
Sun Jan 5 23:19:52 CET 2003

Boethius wrote:
> Can a function tell which function / method called it?

you can get to the name of the caller's function with 
something like 
    >>> def f():

    >>> def g():
           import inspect
           print inspect.currentframe(1).f_code.co_name

    >>> f()

But ASFAIK there is no direct way to get to the function
*object*.  With the following snippet you might get
to a calling function if it is defined at the module level
(e.g. it doesn't get to instance methods).

def determine_calling_function():
    import inspect
    frame = inspect.currentframe(1)
    return frame.f_globals[frame.f_code.co_name]

I am not sure if the frame object provides enough
information to unambigously get to the object
currently executing in it.  



"Why are people killing each other when there is so much fun stuff
 to be had through friendly cooperation?" (Bengt Richter on

More information about the Python-list mailing list