Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.x从pickle还原变量_Python_Python 3.x_Pickle_Shelve - Fatal编程技术网

Python3.x从pickle还原变量

Python3.x从pickle还原变量,python,python-3.x,pickle,shelve,Python,Python 3.x,Pickle,Shelve,我的字典里有几十个变量。如果某些条件为真,我需要恢复所有这些变量(所有不同类型),使用与dict键相同的名称 我简化了代码以指出问题所在。例如,其中一个键是“ref10_data”。如果变量在函数的其他地方定义,它不会被覆盖,但我希望它被覆盖 import _pickle as pickle from numpy import max def main(): processing_path = '/data/common/PROBSEV_DATA/processing/' ref10_

我的字典里有几十个变量。如果某些条件为真,我需要恢复所有这些变量(所有不同类型),使用与dict键相同的名称

我简化了代码以指出问题所在。例如,其中一个键是“ref10_data”。如果变量在函数的其他地方定义,它不会被覆盖,但我希望它被覆盖

import _pickle as pickle
from numpy import max

def main():
  processing_path = '/data/common/PROBSEV_DATA/processing/'
  ref10_data = 0
  restore_dict = pickle.load(open(processing_path + 'cc_rt_prob_svr.out','rb'))

  for key in restore_dict:
    globals()[key] = restore_dict[key]

  print(max(ref10_data))

if __name__ == '__main__':
  main()
“0”是打印的内容。这种方法是可行的,但是如果之前定义了变量,它不会覆盖该变量。我如何让它重新定义一个变量,或者有更好的方法来构造这个功能?
谢谢。

您可以简单地将变量作为关键字参数(“kwargs”)传递给另一个函数,而不是篡改
globals
,因为这是不合法和不和谐的:

def foo(ref10_data, another_var, yet_another_var):
    print(max(ref10_data))

def main():
    ...
    restore_dict = pickle.load(...)
    foo(**restore_dict)

这是一个简单、直观和通灵的方法。

为什么不在字典中使用它们呢?