为什么使用importlib而不是exec imp

2024-04-20 04:47:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,如果您想动态地导入一个模块(比如从一个字符串名),您可以使用模块importlib和函数importlib.import_module("foo"),这两个函数本质上与import foo相同(但它是动态的)。在

总之,在我的程序中,我使用一个函数从列表中导入一个模块,所以它看起来像这样:

# Note: this code does not produce the desired result.
# Please see the snippet below, for the working version
module_list = ["os"]

def import_module(name):
    exec("global {}".format(name))
    exec("import {}".format(name))
for item in module_list:
    import_module(item)

我在网上还没见过这种解决方案。我要问的是为什么?这是因为我在使用exec()函数(正如我读过无数次的不要做的那样),还是因为它更容易混淆

编辑:我觉得需要注意的是,这不是我上面的代码,而是与这个问题实际相关的部分,而不是让人困惑

编辑(2):感谢用户Aran Fey发现我的代码不工作。我没有正确测试这个片段。下面是一个在Python3.6中工作的版本:

^{pr2}$

Tags: 模块the函数nameimportformat编辑for