首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么使用import库而不是exec导入

为什么使用import库而不是exec导入
EN

Stack Overflow用户
提问于 2019-05-24 01:12:34
回答 1查看 0关注 0票数 0

在Python中,如果要动态导入模块(例如从字符串名称),可以使用模块importlib和函数importlib.import_module("foo"),它实际上给出了相同的结果import foo(但它是动态的)。

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

module_list = ["os"]

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

我没有在网络上的任何其他地方看到过这种类型的解决方案。我问的是,为什么?这是不好的做法,因为我正在使用这个exec()功能(因为我读过不做无数次)或是因为它只是更令人困惑

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

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 10:25:54

它显然不会做同样的事情。

首先,该功能不起作用,例如:

>>> def import_module(name):
...     exec("global {}".format(name))
...     exec("import {}".format(name))
...
>>> import_module('sys')
>>> sys
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined

那部分可以修复,但更重要的是,如果它有效,它会做什么?

import_module('os;os.system("format g:")')

绝对比任何import声明都要多......

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档