Python从导入的文件中提取变量
我有3个文件。一个用于定义变量,另两个包含所需的模块 变量.pyPython从导入的文件中提取变量,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(
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次。