好吧...
我找了又找,想找一个直接回答我问题的答案,但是没有成功。我的问题是相当直接的,老实说,我以为会有一个更直接的答案。请记住,我对这门语言还比较陌生,还在学习中。
所以我将使用 fileA
和 fileB
作为我的两个文件,和 x
作为我的例子变量。 变量 x
载于 fileB
. 如何导入变量 x
变成 fileA
, 然后 变化 x
到另一个值,通过 raw_input
, 然后 变幻莫测 x
更新 fileB
与新的值?
我不知道这是否可能,但我肯定会这么想。我使用的是python 2.7.11,先谢谢你。
如果你所指的 "变量 "是一个可变的值,你所要求的就可以了。
fileB:
my_variable = ["a list with a string in it"]
fileA:
from fileB import my_variable # import the value
my_variable.append("and another string")
After fileA
已加载 fileB.my_variable
将有两个值。
但是,这只适用于可变的值。如果变量是不可变的,那么在下面的代码就会有两个值。fileA
不能原地改变,所以你会有问题。没有办法直接解决这个问题,但是有很多方法可以解决这个问题,并且还能达到你想要的效果。
最简单的方法就是使用 import fileB
而不是 from fileB import my_variable
. 这让你在任何 fileB
的命名空间,只需使用类似于 fileB.whatever
. 你可以根据自己的意愿重新绑定命名空间中的东西。
fileB:
my_variable = 1 # something immutable this time
fileA:
import fileB
fileB.my_variable = 2 # change the value in fileB's namespace
这可能是最简单的方法。
另一种解决方案是将不可变的变量放在一个可变的容器中,然后修改容器,而不是变量。例如,如果字符串 "a list with a string in it"
的值,我们可以简单地将一个新的值赋给 my_variable[0]
而不是追加)。
一个常见的方法是将值放入一个字典、列表甚至是一个类中(或一个类的可突变实例)。然后你可以导入容器对象,并突变它来改变你关心的值。
如果你指的是常量变量,在90%的情况下,这意味着程序的结构不好,因为它可能更容易实现。
一个可能的方法是
在两个文件中创建一些带有输入参数的函数 然后执行它们,并对其值进行处理。
例如
fileA. py
from fileB import testB
TEST_VAL = 5
def testA(val):
TEST_VAL += 10
result = testB(TEST_VAL)
# play with changed TEST_VAL
fileB.py
def testB(val):
# do something
return val ** 2