我想知道是否有一种方法可以动态导入整个模块(相当于“import*some\ u module”)。你知道吗
在对其他帖子进行了一些研究之后,我发现您可以动态地执行“导入一些\模块”,但不能拉出整个模块。你知道吗
为了澄清我的问题
一些模块:
SOME_VARIABLE = 1
模块a:
if(1 == 1):
__import__("some_module");
模块b:
from module a import *
print(SOME_VARIABLE);
运行这段代码会返回一个无法识别的变量异常,我想阻止它。你知道吗
动机:
假设我有一个全局模块,它通过接收参数的函数导入多个其他模块。你知道吗
示例:
模块a:
import_modules(modules_id):
if(modules_id == 1):
from module_c import *
from module_d import *
else :
from module_e import *
模块b:
from module a import *
import_modules(1);
我想通过显式调用访问模块c/d中的所有变量。你知道吗
我的实际问题:
我有一个接口驱动程序,它使用不同的协议(每个协议通过不同的类实现)与不同的设备进行交互,这些协议有一些相似之处,例如:它们都有一个CUSTOMER\u STATUS dict(在protcol\u a/b\u global\u def模块中定义,该模块由特定协议导入)。你知道吗
我遇到的问题是,两个协议都有同名的变量,而且由于接口驱动程序需要识别它们,我无法知道我正在从使用接口驱动程序的程序访问哪个变量(导入它)。你知道吗
考虑到使用接口驱动程序的程序只动态地知道它需要使用哪个协议,并且我希望避免在程序中手动导入协议全局定义(即使我希望在程序中使用它的变量)。你知道吗
donkopotamus答案的扩展
使模块成为:
现在在b
这几乎可以肯定是一个^{} problem 。。。但为了证明这是可以做到的。。。你知道吗
假设
some_module
是使模块
a
成为:现在在
b
会产生你想要的结果。你知道吗
这里发生了什么?在
a
中,我们导入some_module
,然后获取代表其名称空间的__dict__
,并使用它来更新a
中的全局变量。你知道吗模块a
模块b
相关问题 更多 >
编程相关推荐