如何在python中导入模块的变量?

时间:2017-06-19 05:43:33

标签: python

我想导入名为" config"的模块我想要导入config.times。但在我的代码中,times是列表name_list中的元素,它表示:

name_list = ['times','date','hours']

当我想使用config.times时,我会尝试config.name_list[0]。当然有一个错误" 'module' object has no attribute 'name_list'"。那么我该如何解决呢?谢谢。
---更多详情:
我的代码是:config.py,main.py。在config.py,times = [' 00:00:00',' 12:00:00'],并在主要.py,name_list = [' times',' date',' hours'],我想在main.py中执行exec now = config.times

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望从导入的模块中访问times变量,但您希望该名称(times)来自另一个变量,而不是硬编码

这可以通过几种方式实现。最简单的可能是使用getattr函数从模块对象中获取属性:

import config

name = "times" # or wherever, e.g. name_list[0]

results = getattr(config, name) # will get a reference to config.times

我不确定这样做真的是一个好主意。一般来说,变量名(例如times模块中的config)应该供程序员解释。它们不应该是数据。如果要按名称查找数据,通常应使用字典来存储键和值,而不是使用模块的命名空间。

例如,您的config模块可能有一个名为data的字典,您可以将当前的times值移至data['times']。然后按名称查找值只是字典查找:config.data[name]

答案 1 :(得分:0)

尝试在main.py中使用以下内容:

from config import times

name_list = ['config.times','date','hours']

从此处开始编辑,以获得更多说明 然后使用:

eval(name_list[0]) # for evaluating config.times

我希望这更清楚

请删除downvote。