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

时间:2016-01-21 00:07:21

标签: python python-2.7 variables

好了...

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

因此,我将使用fileAfileB作为我的两个文件,x作为我的示例变量。变量x包含在fileB。如何将变量x导入fileA然后x更改为另一个值raw_input然后x中使用新值更新变量fileB吗?

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

2 个答案:

答案 0 :(得分:5)

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

FILEB:

from fileB import my_variable  # import the value
my_variable.append("and another string")

的fileA:

fileA

加载fileB.my_variablefileA将包含两个值。

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

最简单的方法是使用from fileB import my_variable代替fileB。只需使用fileB.whatever之类的名称,即可在my_variable = 1 # something immutable this time 的命名空间中显示任何内容。您可以将命名空间中的内容重新绑定到您心中的内容:

FILEB:

import fileB
fileB.my_variable = 2   # change the value in fileB's namespace

的fileA:

"a list with a string in it"

这可能是最简单的方法。

另一种解决方案是将不可变变量放在可变容器中,然后修改容器而不是变量。例如,如果字符串my_variable[0]是我们想要更改第一个示例的值,我们可以简单地为vertical-align: top; //middle actually puts it even lower height: 83px; //the same as the larger area 分配一个新值(而不是追加)。

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

答案 1 :(得分: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