我有这个简单的程序:
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
。这不是我的所有代码,只是重要部分。如果这里没有任何问题请告诉我,以便我知道该怎么做。
答案 0 :(得分:4)
更改
atexit.register(save_f())
到
atexit.register(save_f)
在原始代码中,save_f()
会调用该函数。然后将函数的返回值(即None
)传递给atexit.register()
。
正确的版本将函数对象本身传递给atexit.register()
。
答案 1 :(得分:3)
您正在注册函数的返回值而不是函数本身。而不是在注册之前调用它,只需传入函数引用:
atexit.register(save_f)