1

有没有办法将列表中的变量转换为python中的局部变量?

更具体地说,我一直在做

x = imp.load_source("test","./test")

但我不想做x.var1

我只想能够var1引用每个导入的元素。

这可能吗?

4

2 回答 2

2

如果它只是一个变量,那么您可以执行以下操作:

var1 = x.var1

但是,如果你有很多变量,你可以这样做

from test import *
do_something(var1)

原始模块在哪里test......但不要那样做。我知道,这听起来有悖常理,但是...阅读此内容。坦率地说,只需键入x.var1. 到底有多难,真的?你会为自己省去很多心痛。

于 2013-07-25T17:26:14.163 回答
1

我不确定我是否理解你的问题,我也不确定你想要做的是一个好主意(想想 Python 的禅宗:“命名空间是一个很棒的主意——让我们做更多的事吧! ”)。您是否正在尝试加载 Python 源代码文件并访问它们的局部变量?

再次,我将通过警告重申这些都是坏主意。

A. 你为什么使用 imp 模块?只需像往常一样导入模块。然后将其所有本地范围导入本地范围:

from test import *

这是糟糕的 Python 的典型例子。不要这样做。每个 Python 程序员都会告诉你永远不要使用 from _ import *。它会完成你想要做的事情,但你可能会覆盖局部变量甚至内置函数并导致模糊的错误。

B. 使用execfile。这需要文件的源并在本地范围内执行它。像这样:

execfile('./test', globals(), locals())

这与上一个具有相同的警告:这可能会覆盖局部变量(包括内置)并导致模糊的错误。

于 2013-07-25T17:26:30.013 回答