Модуль traceback
позволяет вам извлечь стек, чтобы вы могли видеть, как вы достигли текущего кадра стека. Если вы хотите, вы можете расширить это так, чтобы печатать вызывающего абонента, до нужного вам стека:
import traceback
def _trace():
stack = traceback.extract_stack()[-3:-1]
path, line, in_func, _instr = stack[0]
print 'called from %s in func %s at line %s' % (path, in_func, line)
def bar():
_trace()
def foo():
bar()
baz()
def baz():
bar()
bar()
foo()
Выход:
called from hello.py in func <module> at line 20
called from hello.py in func foo at line 14
called from hello.py in func baz at line 18