到目前为止,这是我从函数中访问调用模块的问题的最佳解决方案:
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 标准库是否提供了更强大的方法来做到这一点?