1 | ||
Editor: blujacker
Time: 2008/05/28 14:24:44 GMT+2 |
||
Note: |
changed: - Modul atexit ---------------------- Tento modul tedy vám tedy umožňuje specifikovat, jaké funkce se vykonají před tím, než se interpretr ukončí. Může se jednat například o uzavření souboru, skončení připojení k databázi, nebo prostě vypsat pozdrav na rozloučenou. :: import atexit, sys def konec(r): print r atexit.register(konec, "Konec programu") sys.exit([1]) Menší nevýhodou tohoto modulu je, že zadaná funkce se *nezavolá* tehdy, když python zaregistruje fatální interní chybu, nebo když dojde k ukončení pomocí ``os._exit``. Jedná se o alternativu k ``sys.exitfunc``, nicméně je doporučováno používat spíše atexit, protože interpretr pravděpodobně nebude pracovat správně, pokud použijete ``sys.exitfunc`` a ``atexit.register`` dohromady. A protože některé moduly ``atexit`` používají, je doporučeno používat ho i ve svých programech na místo ``sys.exitfunc``. Pomocí tohoto modulu se dá například pozdržet skončení programu: :: import atexit, sys def konec(): raise NameError raw_input() atexit.register(konec) sys.exit([1]) K řádku, na kterém je ``raw_input()`` se interpretr nedostal, protože byla vyvolána výjimka a nebyla ošetřena. :: import atexit, sys, os def konec(): try: raise NameError except: print u"Chyba byla úspěšně zpracována\nStistněte Enter k ukončení programu" raw_input() atexit.register(konec) sys.exit([1]) Tento modul dovoluje zaregistrovat více *ukončovacích* funkcí. Jakmile dojde k ukončení programu, jsou tyto funkce zavolány v pořadí ``LIFO`` (last in, first out).
Tento modul tedy vám tedy umožňuje specifikovat, jaké funkce se vykonají před tím, než se interpretr ukončí. Může se jednat například o uzavření souboru, skončení připojení k databázi, nebo prostě vypsat pozdrav na rozloučenou.
import atexit, sys def konec(r): print r atexit.register(konec, "Konec programu") sys.exit([1])
Menší nevýhodou tohoto modulu je, že zadaná funkce se nezavolá tehdy, když python zaregistruje fatální interní chybu, nebo když dojde k ukončení pomocí os._exit.
Jedná se o alternativu k sys.exitfunc, nicméně je doporučováno používat spíše atexit, protože interpretr pravděpodobně nebude pracovat správně, pokud použijete sys.exitfunc a atexit.register dohromady. A protože některé moduly atexit používají, je doporučeno používat ho i ve svých programech na místo sys.exitfunc.
Pomocí tohoto modulu se dá například pozdržet skončení programu:
import atexit, sys def konec(): raise NameError raw_input() atexit.register(konec) sys.exit([1])
K řádku, na kterém je raw_input() se interpretr nedostal, protože byla vyvolána výjimka a nebyla ošetřena.
import atexit, sys, os def konec(): try: raise NameError except: print u"Chyba byla úspěšně zpracována\nStistněte Enter k ukončení programu" raw_input() atexit.register(konec) sys.exit([1])
Tento modul dovoluje zaregistrovat více ukončovacích funkcí. Jakmile dojde k ukončení programu, jsou tyto funkce zavolány v pořadí LIFO (last in, first out).