如何将 test1.py 中声明的 var 放入 test2.py,在 test2.py 中对 var 执行一些操作,并



为全局变量赋值 例如:

test1.py:

global var
var= 0  
def func1():
print("The updated value of var is :"+var)
#after the updated value perform some operation on var
var=var*2  
def func3():
global var
print("The final value of var is :"+var)    

test2.py:

from test1 import *
def func2():
global var
print("The initial value of var is :"+var)
var = 2+3
func1()

我打算拥有以下 var 值:

函数 1 中 VaR 的初始值为 test2.py:0

函数 2 中 var 的更新值为 test1.py:5

函数 3 中 var 的最终值为 test1.py:10

我在你的代码中注意到的第一件事是

global var

在第一行。在python中,这是不需要的。在全局范围内声明的任何变量都自动是全局变量。您只需要想要修改全局变量的函数中的 global 关键字。

关于python,你需要知道的另一件事是,全局变量只是该特定文件的全局变量。它不会转移到其他模块。

所以现在:你怎么做你想做的事情。

我认为,跨模块保持这种状态的唯一真正方法是使用某种容器。我使用类,但我相信字典或列表之类的东西会正常工作。这样你也不会弄乱全局范围,你可以对一个容器中的多个变量执行此操作,并且你不需要全局关键字。之所以如此,是因为通过从 test2 导入 test1,当整个 test1 模块再次执行时,您将再次将 var 设置为 0。通过将 by 放在从 test1 和 test2 导入的第三个模块中来解决。我称这个模块为"共享"。代码如下所示:

test1.py:

from test2 import func2
from shared import SharedContainer

def func1():
print("The updated value of var is: {}".format(SharedContainer.var))
# after the updated value perform some operation on var
SharedContainer.var = SharedContainer.var*2

def func3():
print("The final value of var is: {}".format(SharedContainer.var))

if __name__ == "__main__":
func2()
func3()

test2.py


from shared import SharedContainer

def func2():
from test1 import func1
print("The initial value of var is: {}".format(SharedContainer.var))
SharedContainer.var = 2+3
func1()

shared.py

class SharedContainer:
var = 0

希望对:)有所帮助

相关内容

  • 没有找到相关文章

最新更新