[英]In Django/Python, how can I find out which method called my method?
[英]How do I find out in which file or module is my function called?
Python 2.5到2.7:
#a.py:
def foo():
pass
#b.py
from a import foo
foo()
从foo()
,我想知道它已经在“ b
”模块中调用了。 我现在能想到的唯一方法就是提出异常,捕捉它并检查追溯(向上一级)。 有一种母马自然的做法吗?
您可以使用检查模块执行此操作。
例如
#!/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)
没关系,事实证明解决方案是:
import traceback
traceback.extract_stack(limit=2))[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.