从另一个文件导入和更改变量

Cet*_*her 8 python variables python-2.7

好的...

我搜索和搜索寻找直接回答我的问题的答案,但没有成功.我的问题非常简单,老实说我会有更直接的答案.请记住,我仍然是相对较新的语言,我还在学习.

所以我将使用fileAfileB作为我的两个文件,并x作为我的示例变量.变量x包含在fileB.如何将变量x导入fileA,然后x通过更改为另一个值raw_input,然后使用新值x更新变量fileB

我不确定这是否可行,但我确实想这么想.我正在使用python 2.7.11,谢谢你的高级.

Blc*_*ght 9

如果您所指的"变量"是一个可变值,那么您所要求的就是可行的.

FILEB:

my_variable = ["a list with a string in it"]
Run Code Online (Sandbox Code Playgroud)

的fileA:

from fileB import my_variable  # import the value
my_variable.append("and another string")
Run Code Online (Sandbox Code Playgroud)

fileA已经加载后fileB.my_variable会有两个值.

但是,这只适用于可变值.如果变量是不可变的,则代码fileA不能在适当的位置更改它,因此您将遇到问题.没有办法直接解决这个问题,但是有很多方法可以解决这个问题并且仍然可以达到你想要的效果.

最简单的方法就是使用import fileB而不是from fileB import my_variable.fileB只需使用类似的名称,这就可以在命名空间中显示任何内容fileB.whatever.您可以将命名空间中的内容重新绑定到您内心的内容:

FILEB:

my_variable = 1    # something immutable this time
Run Code Online (Sandbox Code Playgroud)

的fileA:

import fileB
fileB.my_variable = 2   # change the value in fileB's namespace
Run Code Online (Sandbox Code Playgroud)

这可能是最简单的方法.

另一种解决方案是将不可变变量放在可变容器中,然后修改容器而不是变量.例如,如果字符串"a list with a string in it"是我们想要更改第一个示例的值,我们可以简单地为其分配一个新值my_variable[0](而不是追加).

执行此操作的常用方法是将值放入字典,列表或甚至类(或一个类的可变实例)中.然后,您可以导入容器对象并对其进行修改以更改您关心的值.