导入另一个python文件时,会为具有相同名称的变量分配一个module-object:
>>> import somemodule
>>> somemodule
<module 'somemodule' from '/home/code/test/somemodule.py'>
但是如何将活动模块作为somemodule.py
本身的对象获取,该对象应该与somemodule
中的变量<stdin>
相同?
答案 0 :(得分:1)
您可以从__name__
获取当前模块的名称。该名称看起来像package.module
(假设您的文件位于package / module.py中)。
使用该字符串访问sys.modules
内的模块,但要注意:您不希望在模块加载过程中执行此操作!在运行模块的最外层代码时,模块定义仍然处于不稳定状态 - 您不一定总是能够访问所有内容。
对于特定示例,模块语句从上到下执行。因此,如果您访问中间的模块,访问上方定义的任何变量和函数都将在模块中,但访问下面定义的内容将不会被执行,因此不会在模块中。糟糕!