python的全局变量如何在模块之间共享?

eshow eshow 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个简单的实验:

假设现在有两个模块,模块varmain.py负责声明并初始化全局变量,同时作为main的入口调用其他辅助模块完成程序功能;模块varprinter负责打印全局变量,你可以想像该模块是需要访问全局变量并使用它们完成某些具体的业务工作。

代码如下:

#!/usr/bin/env python
#module varmain.py

import varprinter
name = ''

def loadName():
global name
name = 'Hello!'


if __name__ == '__main__':
loadName()
print 'in main name = ', name
varprinter.printName()



#!/usr/bin/env python
#module varprinter.py

from varmain import name

def printName():
print 'in varprinter name = ', name


运行后的结果为:

in main name = Hello!
in varprinter name =

即全局变量name并没有保持。

一些简单的修改如在varprinter.py中把import改成from import,在varmain.py中撤掉loadName()函数,而将name变量的修改直接放到if __name__ == '__main__':下等招数都试过了,效果一样。

各位请调试成功后回帖,另外也不要修改程序的整体结构,在前面已经说清楚了,varmain模块是负责管理全局变量的,可以想像是从数据库或者文件等持久层读入全局变量;varprinter是访问和使用全局变量来完成业务功能的。不知各位高手是否有可行性的建议?谢谢!
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
eshow
脚本语言 37,737 成员 34,208 内容