【发布时间】:2019-02-12 08:45:59
【问题描述】:
我想了解使用 exec 进行导入的缺点。其中一个文件用作特定功能的实际实现的接口,具体取决于所选项目(框架旨在用于多个项目)。
第一个用例是这样的:
exec ("from API.%s.specific_API_%s import *" % (project, project))
这样,除了注入接口模块本身的变量project 之外,我不需要硬编码任何东西。
这是另一种方式:
if project == 'project_one':
from API.project_one.specific_API_project_one import *
elif project == 'project_two':
from API.project_two.specific_API_project_two import *
elif project == 'project_three':
from API.project_three.specific_API_project_three import *
这样,每次添加新项目以支持时,我都必须更改此接口文件。
【问题讨论】:
-
第三种可能的方法是使用
importlib.import_module,它接受一个字符串参数来进行导入。这可能比使用exec
标签: python python-2.7 python-import python-exec