0

在 Python 上,我制作了一个用于保存和加载整数的模块,它可以大致按我的意愿保存(我使用的是 Pickle)但是当我加载它时,我以元组形式收到我的整数(因为我把它做成了一个元组来保存)我想将元组的组件分配给我程序中的整数,但它不会帮到你!这是我的代码:

def save(ob1,ob2,ob3,ob4,ob5):
    import pickle
    tmp = ob1,ob2,ob3,ob4,ob5
    output = open('save.sav','w')
    pickle.dump(tmp,output)
    output.close()

def load(ob1,ob2,ob3,ob4,ob5):
    import pickle
    input2 = open('save.sav','r')
    pickleload = pickle.load(input2)
    ob1 = pickleload[0]
    ob2 = pickleload[1]
    ob3 = pickleload[2]
    ob4 = pickleload[3]
    ob5 = pickleload[4]

我试着按照 aix 说的去做,但是没有用。我可能将他的代码放在错误的地方或类似的地方。Aix,您能否更好地解释一下,或者重新发布我的代码但已编辑?或者其他人可以帮助我吗?

4

2 回答 2

1

load()像这样改变:

def load():
    import pickle
    input2 = open('save.sav','r')
    return pickle.load(input2)

然后它可以像这样使用:

ob1, ob2, ob3, ob4, ob5 = load()

您的原始版本不起作用,因为当您ob1 = ...在函数内部分配时,更改不会在函数返回时传播给调用者(ob1是一个通过引用传递的不可变对象;分配给它会重新绑定引用,但新的引用不会传回给调用者)。

于 2011-09-20T10:15:56.863 回答
0

以下 Python 代码片段应该对您有所帮助。变量 ob1 到 ob5 被赋值pickle.load(open('save.sav', 'r'))为全局变量,因此它们可以在def load():函数外部访问。

import pickle
def load():
    global ob1, ob2, ob3, ob4, ob5
    ob1, ob2, ob3, ob4, ob5 = pickle.load(open('save.sav', 'r'))
于 2012-06-12T14:10:02.987 回答