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 に答える