从多个库导入相同的变量

时间:2016-02-20 12:40:47

标签: python loops variables import

我有大约20个不同的模块,它们都包含一个具有相同名称的变量。我试图导入这些变量,而不必明确键入每个导入。所以不要这样做:

import a,b,c,d,e

a1 = a.var
b1 = b.var
c1 = c.var
d1 = d.var
e1 = e.var

我想有一种动态创建它们的循环。类似的东西:

module_list = [a,b,c,d,e]

for module in module_list:
    create module.var

答案可能在字典的某处,但我不太确定在这里如何使用它们。

1 个答案:

答案 0 :(得分:2)

如果您有文件a.py

var = 1

和文件b.py

var = 2

你可以这样做:

from importlib import import_module

module_list = ['a', 'b']
variables = {}
for mod_name in module_list:
    mod = import_module(mod_name)
    variables[mod_name] = getattr(mod, 'var')

>>> variables
{'a': 1, 'b': 2}
>>> variables['a']
1

importlib.import_module允许使用字符串作为名称导入模块。您可以使用getattr()再次使用字符串作为其名称来检索属性,例如:

>>> import sys
>>> sys.version == getattr(sys, 'version')
True

如果你是一个单行,你可以在一行中完成:

variables = {mod_name: getattr(import_module(mod_name), 'var') for mod_name in module_list}
相关问题