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 回答