Python3.x从pickle还原变量
我的字典里有几十个变量。如果某些条件为真,我需要恢复所有这些变量(所有不同类型),使用与dict键相同的名称 我简化了代码以指出问题所在。例如,其中一个键是“ref10_data”。如果变量在函数的其他地方定义,它不会被覆盖,但我希望它被覆盖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_
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)
这是一个简单、直观和通灵的方法。为什么不在字典中使用它们呢?