全局变量未在 python 中更新

Global variable is not updating in python

我有 3 个文件。

globalVar.py

global m_pTest
m_pTest = None

FileOne.py

import globalVar
import fileTwo

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

fileTwo.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

为什么要使用全局?

# FileOne.py
import fileTwo

value = Class.getOutput() 
fileTwo.fun(value)
#Do anything

# fileTwo.py
def fun(value):
    intVal = value.getInt()   
    print intVal