3 způsoby, jak ukončit program v Pythonu

Užitečné odkazy

Schopnost efektivně ukončit program je klíčová dovednost, která se hodí v mnoha situacích. Ať už vytváříte hru, kde uživatel může ukončit hraní, nebo potřebujete zastavit skript po splnění dané podmínky, je důležité znát různé způsoby, jak program v Pythonu ukončit. Podíváme se na tři metody, které se používají k zastavení provádění programu.

1. Využití funkcí quit() nebo exit()

Jedním z nejjednodušších způsobů, jak ukončit pythonovský program, je použitím vestavěných funkcí `quit()` nebo `exit()`. Když zavoláte jednu z těchto funkcí, program okamžitě skončí.

Funkce `quit()` a `exit()` dělají v podstatě totéž, takže volba mezi nimi je spíše otázkou osobních preferencí.

Zde je příklad, jak lze použít funkci `quit()` k ukončení běhu programu:

 for cislo in range(10):
    if cislo == 9:
        quit()
    print(cislo)

Tento program vypíše na konzoli čísla od 0 do 8. Když se proměnná `cislo` rovná 9, program se ukončí. Funkci `quit()` je také možné použít k ukončení interaktivního prostředí Python (IDLE).

Je důležité si uvědomit, že `quit()` i `exit()` jsou závislé na modulu `site`, proto by se neměly používat v produkčním kódu. Pro takové účely je lepší použít metodu `sys.exit()`.

2. Použití funkce sys.exit()

Když ve vašem programu použijete `sys.exit()`, Python vyvolá výjimku `SystemExit`. Tato funkce umožňuje zadat volitelný argument, který udává celočíselný návratový kód (výchozí hodnota je 0). Alternativně lze předat objekt, který způsobí návratový kód 1 a vypíše textovou reprezentaci objektu na standardní chybový výstup.

 import sys 

for cislo in range(10):
    if cislo == 5:
        sys.exit("Program ukončen.")
    print(cislo)

Výstup programu bude vypadat takto:

Stejně jako `quit()` a `exit()`, i `sys.exit()` vyvolává výjimku `SystemExit`. To znamená, že můžete zavolat `sys.exit()` nebo přímo vyvolat `SystemExit()`. Obě možnosti akceptují volitelný argument.

Pokud vám není jasné, jak tento kód funguje, je doporučeno prostudovat si nejdůležitější principy Pythonu.

3. Použití funkce os._exit()

Další možností ukončení programu je speciální funkce `os._exit()`. Tato funkce také umožňuje předat volitelný argument, který určuje návratový kód. Funkce `os._exit()` pochází z modulu `os` a okamžitě ukončí proces bez provádění obvyklých úklidových operací, které se standardně provádějí při ukončení programu Python.

Vzhledem k tomu, že tato funkce provádí ukončení bez běžného úklidu, měla by se používat jen ve specifických případech. Podle dokumentace Pythonu je příkladem podřízený proces po forku (nový proces vytvořený pomocí funkce os.fork()).

Zde je příklad, jak lze použít funkci `os._exit()` pro ukončení programu:

 import os
import sys

def proces_potomka():
    print("Spouští se proces potomka.")
    os._exit(0)

def hlavni_proces():
    print("Spouští se hlavní proces.")

    try:
        pid = os.fork()

        if pid == 0:
            
            proces_potomka()
        else:
            
            print(f"Hlavní proces pokračuje, PID potomka: {pid}")
    except OSError as e:
        print(f"Fork selhal: {e}")
        sys.exit(1)

    print("Hlavní proces dokončen.")

if __name__ == "__main__":
    hlavni_proces()

Výstup tohoto kódu je následující:

Jakou metodu byste měli zvolit pro ukončení programu v Pythonu?

Python nabízí několik způsobů, jak ukončit program. Většina z těchto metod však dělá totéž. Toto zjednodušení vám usnadní rozhodování, pokud potřebujete do svého programu přidat mechanismus pro ukončení.

Zkrátka, `sys.exit()` by měla být vaší preferovanou metodou pro ukončení programu v Pythonu. Vyvolá výjimku `SystemExit` s volitelným návratovým kódem.

Funkce `quit()` a `exit()` se hodí především v interaktivním režimu Pythonu (REPL). V produkčním kódu byste se jim měli vyhnout, protože jsou závislé na modulu `site`, který nemusí být vždy dostupný. Použití `os._exit()` by mělo být omezeno na případy, kdy pracujete s kódem, který forkuje procesy.