在Python中使用全局变量的注意点和推荐实践

Python支持在py文件中定义全局变量,但是在不同文件中对全局变量的修改只会在本文件中生效。例如:

GlobalVarSource.py中定义:

arrGlobalArray = []
 
def UpdateGlobalArray() :
    arrGlobalArray = [2,4,5]
    print(f"In GlobalVarSource, arrGlobalArray={arrGlobalArray}")
#End Sub

GlobalVarUser.py中定义:

from GlobalVarSource import *
 
# Main entry point
if __name__ == "__main__" : 
    UpdateGlobalArray()
    print(f"In GlobalVarUser, arrGlobalArray={arrGlobalArray}")
#End Sub

运行GlobalVarUser.py,得到输出:

In GlobalVarSource, arrGlobalArray=[2, 4, 5]
In GlobalVarUser, arrGlobalArray=[]

为了在多个文件之间同步对全局变量的更改,可以将全局变量封装到对象实例中。例如:

GlobalVarSource.py中定义:

class GlobalVarContainer :
    arrGlobalArray = []
#End Class
objGlobalVarContainer = GlobalVarContainer()
 
def UpdateGlobalArray() :
    objGlobalVarContainer.arrGlobalArray = [2,4,5]
    print(f"In GlobalVarSource, arrGlobalArray={objGlobalVarContainer.arrGlobalArray}")
#End Sub

GlobalVarUser.py中定义:

from GlobalVarSource import *
 
# Main entry point
if __name__ == "__main__" : 
    UpdateGlobalArray()
    print(f"In GlobalVarUser, arrGlobalArray={objGlobalVarContainer.arrGlobalArray}")
#End Sub

运行GlobalVarUser.py,得到输出:

In GlobalVarSource, arrGlobalArray=[2, 4, 5]
In GlobalVarUser, arrGlobalArray=[2, 4, 5]

参考资料:

https://geek-docs.com/python/python-ask-answer/197_python_using_global_variables_between_files.html

https://blog.csdn.net/liao392781/article/details/80067867

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License