繁体   English   中英

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

[英]Importing and changing variables from another file

好的...

我搜索和搜索寻找直接回答我的问题的答案,但没有成功。 我的问题很简单,老实说,我认为那里会有更直接的答案。 请记住,我对这门语言还比较陌生,还在学习中。

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

我不确定这是否可能,但我肯定会这么认为。 我正在使用 python 2.7.11,先谢谢你。

如果您所指的“变量”是可变值,那么您所要求的将起作用。

文件B:

my_variable = ["a list with a string in it"]

文件A:

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

加载fileB.my_variablefileA将有两个值。

但是,这只适用于可变值。 如果变量是不可变的,则fileA的代码无法就地更改它,因此您会遇到问题。 没有办法直接解决这个问题,但是有很多方法可以解决这个问题,并且仍然可以得到你想要的结果。

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

文件B:

my_variable = 1    # something immutable this time

文件A:

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

这可能是最简单的方法。

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

一种常见的方法是将值放入字典、列表甚至类(或一个的可变实例)中。 然后你可以导入容器对象并改变它来改变你关心的值。

如果你的意思是常量变量,在 90% 的情况下,这意味着程序的架构不好,因为它可能更容易实现。

一种可能的方法是:

使用输入参数在两个文件中创建一些函数并执行它们并使用值进行播放。

例如:

文件A.py

from fileB import testB
TEST_VAL = 5

def testA(val):
    TEST_VAL += 10
    result = testB(TEST_VAL)
    # play with changed TEST_VAL

文件B.py

def testB(val):
    # do something
    return val ** 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM