3

私はこの簡単な手順を持っています:

def save_f():
    global register
    register = register_registerer()
    outFile = open('FobbySave.txt', 'wb')
    pickle.dump(register, outFile)
    outFile.close()
    print register

atexit.register(save_f())

問題はsave_f、プログラムを実行するとすぐに呼び出されることです。これは私のコードのすべてではなく、重要な部分です。ここに問題がない場合は、私に教えてください。そうすれば、私は何をすべきかを知ることができます。

4

2 に答える 2

4

変化する

atexit.register(save_f())

atexit.register(save_f)

元のコードでは、save_f()呼び出しは関数を呼び出します。次に、関数(つまりNone)の戻り値がに渡されatexit.register()ます。

正しいバージョンは、関数オブジェクト自体をに渡しますatexit.register()

于 2013-03-13T20:52:04.780 に答える
3

関数自体ではなく、関数の戻り値を登録しています。登録する前に呼び出す代わりに、関数参照を渡すだけです。

atexit.register(save_f)
于 2013-03-13T20:52:09.963 に答える