如果您所指的“变量”是一个可变值,那么您所要求的将起作用。
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")
之后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]
(而不是附加)。
一种常见的方法是将值放入字典,列表甚至是类(或其中一个的可变实例)中。然后,您可以导入容器对象并对其进行突变以更改您关心的值。