Python 在pickle中保存整数并调用它们

Python 在pickle中保存整数并调用它们,python,Python,这是我的代码,我想将值“test”保存到文件中,以便在程序重新打开时调用它 import pickle test = 0 def Save(): with open('objs.pickle', 'wb') as f: pickle.dump(test, f) def Load(): with open('objs.pickle', 'rb') as f: test = pickle.load(f) 这段代码的问题是,当我重新打开程序并在

这是我的代码,我想将值“test”保存到文件中,以便在程序重新打开时调用它

import pickle
test = 0

def Save():
     with open('objs.pickle', 'wb') as f:
         pickle.dump(test, f)

def Load():
    with open('objs.pickle', 'rb') as f:
        test = pickle.load(f)
这段代码的问题是,当我重新打开程序并在中运行,然后键入Load()时,它表示“test”仍然等于0。(可能遗漏了一些明显的信息)


因此,我的问题是,如何解决以斜体字发布的问题?

全局变量
test
与函数
Load()中的
test
无关。将您的功能更改为:

def Load():
    with open('objs.pickle', 'rb') as f:
        return pickle.load(f)
现在,该函数返回从pickle文件读取的值

可以这样称呼:

print(Load())
旁注:按照惯例,函数名称在Python中都是小写的。因此函数名实际上应该是
load()

编辑 以更好的方式完成整个计划:

import pickle

def save(file_name, obj):
    with open(file_name, 'wb') as fobj:
        pickle.dump(obj, fobj)

def load(file_name):
    with open(file_name, 'rb') as fobj:
        return pickle.load(fobj)

def main():
    test = 0
    file_name = 'objs.pickle'
    save(file_name, test)
    print(load(file_name))

if __name__ == '__main__':
    main()

您正在保存一个
0
,因此实际上加载时会得到一个
0
。对不起,我忘了提到我将空闲状态下的“测试”更改为不同的值,并且在重新启动后它始终返回0。或者,使用原始的
load
,但是在顶部添加
global test
。@ShadowRanger No
global
请。使用返回值。@MikeMüller:如果
Save
正在使用全局值,
Load
也应该用于对称性。一般来说,不认可这种设计,而是修复其中一种而不是另一种是愚蠢的。@ShadowRanger将
Save()
更改为
Save(test)
怎么样?“听起来好多了!”暗影游侠为整个程序添加了一个更好的版本。