A recipe to find out which function is the caller of the current function.
The caller
function can be helpful for debugging — if there is no real debugger available. In terms of software engineering (loose coupling etc.) this should not be used in production code though.
1 2 3 4 5 6 7 | import inspect
def callee():
return inspect.getouterframes(inspect.currentframe())[1][1:4]
def caller():
return inspect.getouterframes(inspect.currentframe())[2][1:4]
|
Example usage:
def anyfunction():
print "Function %s called from function %s" % (callee(), caller())
def anotherfunction():
anyfunction()
anotherfunction()
Output:
Function ('/tmp/caller.py', 11, 'anyfunction') called from function ('/tmp/caller.py', 14, 'anotherfunction')