在使用全局变量时,我在Python中遇到了一个奇怪的问题。在
我有两个模块(文件):mod1.py
和{
mod1
试图修改在mod2
中定义的全局变量{var
和{var
似乎是两个不同的东西。因此,结果表明这种修改不起作用。在
代码如下:
#code for mod2.py
global var
var = 1
def fun_of_mod2():
print var
#code for mod1.py
from mod2 import var,fun_of_mod2
global var #commenting out this line yields the same result
var = 2 #I want to modify the value of var defined in mod2
fun_of_mod2() #but it prints: 1 instead of 2. Modification failed :-(
你知道为什么会这样吗?我如何修改在^{mod2
中定义的val
的值?在
谢谢
将
var
导入mod1
时:在mod1的名称空间中,您给它起了一个名称
^{pr2}$var
。就好像你这样做了:换句话说,值现在有两个名称,}。一开始它们是相同的,但是当你重新分配
mod1.var
和{mod1.var
,mod2.var
仍然指向相同的东西。在你想做的只是:
然后访问并将变量赋值为
mod2.var
。在需要注意的是,Python中的全局变量并不是真正的全局变量。它们只对声明它们的模块是全局的。要访问另一个模块中的全局变量,可以使用
module.variable
语法。可以在函数内部使用global
语句,以允许将模块全局名称分配给它(如果没有全局名称,分配给变量会使它成为该函数中的局部变量)。它没有其他效果。在相关问题 更多 >
编程相关推荐