繁体   English   中英

无法分配全局字典参数

[英]can't assign the global dictionary parameter

我试图在pickle object中加载数据文件,但是当它加载时,它分配给新参数,引用memory不同,我找不到将它分配给全局字典参数的方法

模块.py

import pickle
path2file='c:\file'
Objects={}


def loadPickle():
  global Objects
  print(id(Objects))  #xxx111
  with open (path2file, 'rb') as fp:
    Objects = pickle.load(fp)
 print(id(Objects)) #xxx222
 # Objects= copy.copy(x)
 

主文件


from module import *

loadPickle()
print(id(Objects))  #xxx111

您正在为名称Objects分配一个不同的字典 - 您从 pickle 文件加载的字典。

由于名称现在将引用不同的字典,因此id(Objects)将不同并且对应于第二个字典而不是第一个字典。

现在,当您导入模块时, module.Objects被加载一次(并且在loadPickle更改之前)到全局scope。

当您在loadPickle中更改它时,它仅在模块module级别更改,而不是在全局 scope 中更改。

但是,当您这样做时:

import module
module.loadPickle()
print(id(module.Objects))

它应该做你想做的事。

另一种方法可能是从 function loadPickle中创建全局变量,而全局变量 scope 中不存在(只需删除初始化Objects = {}表单module )。 在这种情况下,变量将包含从 pickle 加载的预期字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM