为全局变量赋值 例如:
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
希望对:)有所帮助