Change
atexit.register(save_f())
to
atexit.register(save_f)
In your original code, the save_f()
calls the function. The return value of the function (i.e. None
) is then passed to atexit.register()
.
The correct version passes the function object itself to atexit.register()
.