Friday, 29 March 2013

Python : Know thy caller


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')

No comments:

Post a Comment