在Python中理解全局变量

2024-09-24 06:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用全局变量时,我在Python中遇到了一个奇怪的问题。在

我有两个模块(文件):mod1.py和{}

mod1试图修改在mod2中定义的全局变量{}。但是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的值?在

谢谢


Tags: 模块文件ofthepyfor定义var
1条回答
网友
1楼 · 发布于 2024-09-24 06:24:54

var导入mod1时:

from mod2 import var,fun_of_mod2

在mod1的名称空间中,您给它起了一个名称var。就好像你这样做了:

^{pr2}$

换句话说,值现在有两个名称,mod1.var和{}。一开始它们是相同的,但是当你重新分配mod1.varmod2.var仍然指向相同的东西。在

你想做的只是:

import mod2

然后访问并将变量赋值为mod2.var。在

需要注意的是,Python中的全局变量并不是真正的全局变量。它们只对声明它们的模块是全局的。要访问另一个模块中的全局变量,可以使用module.variable语法。可以在函数内部使用global语句,以允许将模块全局名称分配给它(如果没有全局名称,分配给变量会使它成为该函数中的局部变量)。它没有其他效果。在

相关问题 更多 >