Python跨文件共享全局变量的实现方案
本文详解Python中跨文件共享全局变量的实现方法。针对global关键字仅在当前模块生效的限制,提出通过独立的全局变量管理模块(globalvar.py)集中存储数据。通过设置与获取函数,实现多个Python文件间变量的读写共享,并提供完整的代码示例与运行结果分析。
前言
在C语言等编译型语言中,变量必须先声明后使用,因此可以明确区分当前使用的是全局变量还是局部变量。例如:
int a = 5;
void test(void)
{
a = 1; // 没有先声明,所以用的是全局的变量a
}
void test1(void)
{
int a;
a = 2; // 前面声明了,所以用的是局部变量a,对其所做的修改不会影响全局变量a
}
void main(void)
{
printf("before: a = %d\n", a);
test();
printf("after test: a = %d\n", a);
test1();
printf("after test1: a = %d\n", a);
}
而在Python中,变量无需预先声明即可直接使用,这使得跨文件访问全局变量变得复杂。
Python跨文件全局变量的实现
Python中的global关键字用于声明变量为全局变量,但该作用域仅限于当前模块(.py文件)。若在其他.py文件中再次使用global声明同一变量,由于该模块中不存在该变量定义,程序将报错提示未定义。
借鉴global关键字的思路,既然单文件内生效,我们可以创建一个专门用于管理全局变量的“全局变量管理模块”,以此实现跨文件共享。
全局变量管理模块 globalvar.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def _init():
global _global_dict
_global_dict = {}
def set_value(name, value):
_global_dict[name] = value
def get_value(name, defValue=None):
try:
return _global_dict[name]
except KeyError:
return defValue
设置全局变量 a.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import globalvar as gl
gl._init()
gl.set_value('name', 'cc')
gl.set_value('score', 90)
获取全局变量 b.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import globalvar as gl
name = gl.get_value('name')
score = gl.get_value('score')
print("%s: %s" % (name, score))
主程序 main.py
#!/usr/bin/python # -*- coding: utf-8 -*- import a import b
运行主程序文件 python main.py,得出的结果是 cc: 90
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对本站的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













