如何从函数加载到Python中的Globals

时间:2016-11-14 17:55:12

标签: python python-2.7 memory pickle

我有一个将数据加载到词典中的函数。 但是,如何将字典加载到函数内的Globals()中。

功能内部很重要,因为我们可以在脚本端外面轻松完成。

def load_inmemory(fpath):
      globals().update(load237(fpath)[0])

这个不起作用(全局变量是模块/函数的本地...)

A-1,A-1,A-2,A-2,A-2,A-3

1 个答案:

答案 0 :(得分:0)

您应该将这些名称存储在存储在全局变量中的对象上,而不是存储在全局变量中。但你问怎么做,所以这是如何:

Getting corresponding module from functionfor循环和setattr一起用作模块不支持字典操作,可以将函数编写为:

import sys

def load_inmemory():
    module = sys.modules[load_inmemory.__module__]
    for k, v in load237(fpath)[0].items():
        setattr(module, k, v)

load_inmemory()
print x

我测试了以下内容:

import sys

def func():
      module = sys.modules[func.__module__]
      for k,v in {'x':4}.items():
         setattr(module, k, v)

func()
print x

打印4。在Python 2.7.3中测试。