Ce face sys.is_finalizing()
is_finalizing() returnează True în timpul opririi interpretorului, când modulele sunt deja golite. Este folosită în metodele __del__ sau în funcții de curățare, ca să nu încerce operații care ar eșua în acel moment (de exemplu importuri sau scrieri în jurnal).
Ce returnează
True sau False.
Exemple
Exemplul 1: În timpul rulării normale
Funcțiile înregistrate cu atexit rulează înainte de finalizarea propriu-zisă, deci și acolo rezultatul este False.
import sys, atexit
print(sys.is_finalizing())
atexit.register(lambda: print("atexit, finalizare:", sys.is_finalizing()))
Rezultat
False
atexit, finalizare: False
Greșeli frecvente
- Faci operații complexe în
__del__fără să verificiis_finalizing()și primești erori ciudate la închiderea programului.
Comenzi înrudite
sys.exit(), exit() și quit(): Încheie programul, cu un cod de ieșire sau un mesaj de eroare.sys.exception(), exc_info(), excepthook și unraisablehook: Excepția tratată în prezent și funcțiile care se ocupă de erorile neprinse.