python - 如何获取调用当前正在执行的函数的模块?

标签 python introspection

这是迄今为止我解决从函数内访问调用模块问题的最佳解决方案:

import inspect
import sys
def calling_module(level=0):
    filename = inspect.stack()[level+2][1]
    modulename = inspect.getmodulename(filename)
    try:
        return sys.modules[modulename]
    except KeyError:
        return sys.modules['__main__']

...但隐含在 KeyError 的处理中是(很大程度上没有根据的)假设,即它只有在 filename 作为 __main__ 运行时才会发生

Python 标准库是否提供了更强大的方法来执行此操作?

最佳答案

我发现以下方法效果很好:

import inspect
def printfunc()
    stk = inspect.stack()[1]
    mod = inspect.getmodule(stk[0])
    print("Currently in {}.{}".format(mod, stk[3]))

我在一个名为 printfunc()

的实用函数中

关于python - 如何获取调用当前正在执行的函数的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11904960/

相关文章:

java - 内省(introspection)器发现不再存在的属性

ruby - 用代理对象愚弄 Ruby 的 case 运算符 ===

python - 使用 MongoDB 聚合框架计算一阶导数

python - 从 Pivot reshape 和选择 Pandas

Python:按名称获取 smartsheet Sheet 的最佳方法

reflection - Tcl/TK : Is there a way to get the list of options and commands of a Tcl/Tk widget using instrospection or reflection?

python - 如何在不按回车键的情况下输入内容

python - Eclipse Python 集成

Java 对象图访问者库

python - QtScript 内省(introspection)/反射(reflection)?