Python 2.5到2.7:
#a.py:
def foo():
pass
#b.py
from a import foo
foo()
从foo()
开始,我想知道它已在“b
”模块中调用。我现在能想到的唯一方法就是提出异常,捕捉它并检查追溯(向上一级)。是否有一种母马自然的做法?
答案 0 :(得分:3)
您可以使用检查模块执行此操作。
E.g。
#!/usr/bin/env python
# a.py
import inspect
def foo():
for item in inspect.stack():
print item
-
#!/usr/bin/env python
# b.py
from a import foo
foo()
-
$ python b.py
(<frame object at 0x2026fb0>, '/home/tdb/a.py', 6, 'foo', [' for item in inspect.stack():\n'], 0)
(<frame object at 0x1fe4a30>, 'b.py', 5, '<module>', ['foo()\n'], 0)
答案 1 :(得分:0)
没关系,事实证明解决方案是:
import traceback
traceback.extract_stack(limit=2))[0]