How to use inspect to get the caller's info from callee in Python? How to use inspect to get the caller's info from callee in Python? python python

How to use inspect to get the caller's info from callee in Python?


The caller's frame is one frame higher than the current frame. You can use inspect.currentframe().f_back to find the caller's frame.Then use inspect.getframeinfo to get the caller's filename and line number.

import inspectdef hello():    previous_frame = inspect.currentframe().f_back    (filename, line_number,      function_name, lines, index) = inspect.getframeinfo(previous_frame)    return (filename, line_number, function_name, lines, index)print(hello())# ('/home/unutbu/pybin/test.py', 10, '<module>', ['hello()\n'], 0)


I would suggest to use inspect.stack instead:

import inspectdef hello():    frame,filename,line_number,function_name,lines,index = inspect.stack()[1]    print(frame,filename,line_number,function_name,lines,index)hello()


I published a wrapper for inspect with simple stackframe addressing covering the stack frame by a single parameter spos:

E.g. pysourceinfo.PySourceInfo.getCallerLinenumber(spos=1)

where spos=0 is the lib-function, spos=1 is the caller, spos=2 the caller-of-the-caller, etc.