Skip to main content
 首页 » 编程设计

python之全局变量未在 python 中更新

2025年05月04日9虾米姐

我有 3 个文件。

全局变量.py

global m_pTest 
m_pTest = None 

FileOne.py

import globalVar 
import fileTwo 
 
m_pTest = Class.getOutput() # Value is assigne 
fileTwo.fun() 
#Do anything 

文件二.py

 import globalVar 
 
 def fun(): 
    intVal = m_pTest.getInt()   # int value from m_pTest object 
    print intVal 

这是我的短程序示例,当我运行它时它在 fun() 中的 fileTwo.py 中给出错误

 AttributeError: 'NoneType' object has no attribute 'getInt' 

有人可以解释一下这段代码有什么问题吗? 谢谢!

请您参考如下方法:

global m_pTest 不会神奇地使变量成为全局变量;相反,它在当前范围 中设置名称m_pTest 以引用全局变量(来自外部范围)。所以将它放在 globalVar.py 中基本上什么都不做。

如果只想导入变量,可以使用以下方法:

from globalVar import m_pTest 

但是,当将 m_pTest 设置为不同的值时,您不会影响在 globalVar.py 中创建的原始对象,因此其他地方看不到更改。

相反,您必须照常导入 globalVar,然后将 m_pTest 作为该模块的成员引用:

import globalVar 
 
# reading 
print(globalVar.m_pTest) 
 
# setting 
globalVar.m_pTest = 123