【问题标题】:Importing same variable from multiple libraries从多个库导入相同的变量
【发布时间】:2016-02-20 12:40:46
【问题描述】:

我有大约 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

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

【问题讨论】:

  • 如何使用 dict 比仅使用 mod.var 更好?如果您使用字符串动态导入,您仍然需要输入所有名称,因此您所做的只是降低代码的可读性。

标签: python loops variables import


【解决方案1】:

如果你有文件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}

【讨论】:

  • @AtotheSiv 太棒了。顺便说一句,如果它解决了你的问题,你可以accept 一个答案。
猜你喜欢
  • 2018-03-30
  • 2016-09-28
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2011-03-30
  • 2012-05-29
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多