globals获取和修改全局变量,无法实现跨文件修改
python语言中提供和很多的使用内置函数,其中globals()可以让开发者十分快捷的获取全局变量,但globals()的限制是只能获取当前位置的全局变量,举个例子:
这里我们写一个文件set_globals.py,内容如下
def set_global_dct():
glb_dct = globals()
glb_dct["add_key"] = "add_value"
if __name__ == '__main__':
set_global_dct()
print globals().has_key("add_key")
直接运行上面文件的话,我们会得到这样的结果
>>> True
之后我们在定义一个import_set_glb.py,内容如下
from set_globals import set_global_dct
if __name__ == '__main__':
set_global_dct()
print globals().has_key("add_key")
运行之后,会得到
>>> False
通俗的讲,globals()写在哪个文件,不论通过何种手段修改globals()的值,只对globals()所在文件生效。
利用sys.modules实现真正的跨文件修改全局变量
sys.modules会返回一个全局字典,其中当key == '__main__'的时候,可以得到运行的主文件模块对象,如果你在主文件使用globa
1542



被折叠的 条评论
为什么被折叠?



