Python从导入的文件中提取变量

Python从导入的文件中提取变量,python,import,Python,Import,我有3个文件。一个用于定义变量,另两个包含所需的模块 变量.py my_var = "" import variable def trial(): variable.my_var = "Hello" test.py my_var = "" import variable def trial(): variable.my_var = "Hello" main.py(不工作) 当我运行main.py时,它什么也不提供。但是,如果我像这样更改main.py main.py(

我有3个文件。一个用于定义变量,另两个包含所需的模块

变量.py

my_var = ""
import variable

def trial():
    variable.my_var = "Hello"
test.py

my_var = ""
import variable

def trial():
    variable.my_var = "Hello"
main.py(不工作)

当我运行
main.py
时,它什么也不提供。但是,如果我像这样更改
main.py

main.py(工作)

它给了我预期的输出,即,
Hello

在我的例子中,
variable.py
包含更多变量,我不想在访问它们时使用
variable.
。在修改它们时,使用
变量。
不是问题,因为我将根据用户的输入只修改一次,然后在剩余时间内多次跨多个文件访问它们


现在我的问题是,有没有一种方法可以在
test.py
修改
main.py
中的所有变量后提取它们,并且不使用前缀
变量。

您想要实现的目标是不可能的
from MODULE import*
将所有变量名称和值导入命名空间,但不导入变量本身。变量是在本地名称空间中分配的,因此更改它们的值不会反映到它们的原始名称空间中。但是,由于导入的值基本上是对实例的引用,因此会反映可变对象上的更改

这是不推荐使用上述构造的不合格导入的众多原因之一。相反,您应该质疑您的程序结构和所做的设计决策。从长远来看,处理大量模块级变量可能会变得非常麻烦和不方便

考虑对应用程序使用更结构化的方法,例如使用类

我想再次指出,并对实质上解决同一问题的方法给予赞扬


为完整起见,请编辑。这是可能的,但不建议采用这种方法。每次对其非引用变量应用修改时,都必须重新导入模块:

from variable import *  # optional
from test import trial

if __name__ == "__main__":
    trial()
    from variable import *  # simply re-import the variables...
    print my_var

如果从变量导入*执行
操作,则将模块
变量
中的名称添加到本地名称空间,因此在导入时,它们引用指向变量的值。如果现在更改原始模块,则该更改将不会反映在导入的符号中。@dhke是的,我从这两个变体的工作中了解到了这一点。但我的问题有些不同@拉顿:我不明白这个道理。
变量有什么不好的地方。
?@dhke,使用
变量。
可读性更好,我知道。但是,如果知道没有任何局部变量,并且使用的所有变量都来自一个文件,那么就没有必要使用100次。