繁体   English   中英

如何找到我的函数调用的文件或模块?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM