Python – Getting the caller function name inside another function in Python?


If you have 2 functions like:

def A
def B

and A calls B, can you get who is calling B inside B, like:

def A () :
    B ()

def B () :

Best Solution

You can use the inspect module to get the info you want. Its stack method returns a list of frame records.

  • For Python 2 each frame record is a list. The third element in each record is the caller name. What you want is this:

    >>> import inspect
    >>> def f():
    ...     print inspect.stack()[1][3]
    >>> def g():
    ...     f()
    >>> g()

  • For Python 3.5+, each frame record is a named tuple so you need to replace

    print inspect.stack()[1][3]



    on the above code.