有没有办法将列表中的变量转换为python中的局部变量?
更具体地说,我一直在做
x = imp.load_source("test","./test")
但我不想做x.var1
我只想能够var1
引用每个导入的元素。
这可能吗?
有没有办法将列表中的变量转换为python中的局部变量?
更具体地说,我一直在做
x = imp.load_source("test","./test")
但我不想做x.var1
我只想能够var1
引用每个导入的元素。
这可能吗?
如果它只是一个变量,那么您可以执行以下操作:
var1 = x.var1
但是,如果你有很多变量,你可以这样做
from test import *
do_something(var1)
原始模块在哪里test
......但不要那样做。我知道,这听起来有悖常理,但是...阅读此内容。坦率地说,只需键入x.var1
. 到底有多难,真的?你会为自己省去很多心痛。
我不确定我是否理解你的问题,我也不确定你想要做的是一个好主意(想想 Python 的禅宗:“命名空间是一个很棒的主意——让我们做更多的事吧! ”)。您是否正在尝试加载 Python 源代码文件并访问它们的局部变量?
再次,我将通过警告重申这些都是坏主意。
A. 你为什么使用 imp 模块?只需像往常一样导入模块。然后将其所有本地范围导入本地范围:
from test import *
这是糟糕的 Python 的典型例子。不要这样做。每个 Python 程序员都会告诉你永远不要使用 from _ import *。它会完成你想要做的事情,但你可能会覆盖局部变量甚至内置函数并导致模糊的错误。
B. 使用execfile
。这需要文件的源并在本地范围内执行它。像这样:
execfile('./test', globals(), locals())
这与上一个具有相同的警告:这可能会覆盖局部变量(包括内置)并导致模糊的错误。