3 sposoby na zakończenie programu w Pythonie

Photo of author

By maciekx

Szybkie odnośniki

Umiejętność zamykania aplikacji jest kluczowa i przydatna w wielu sytuacjach. Przykładowo, tworząc prostą grę, możesz chcieć ją wyłączyć po działaniu użytkownika lub po spełnieniu określonych warunków. Poznajmy trzy techniki zatrzymywania działania skryptów w Pythonie.

1. Zastosowanie funkcji `exit()` lub `quit()`

Najprostszym sposobem na zakończenie pracy programu w Pythonie jest użycie jednej z wbudowanych funkcji: `quit()` lub `exit()`. Wywołanie jednej z nich spowoduje natychmiastowe zamknięcie aplikacji.

Funkcje `quit()` i `exit()` działają identycznie; wybór między nimi to kwestia osobistych preferencji programisty.

Oto przykład, jak użyć `quit()` do zatrzymania programu:

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

Powyższy skrypt wypisze na ekranie liczby od 0 do 8. Gdy licznik osiągnie 9, program zakończy działanie. `quit()` można też użyć do zamknięcia interpretera Python (IDLE), który pozwala na interaktywną pracę z kodem.

Warto pamiętać, że zarówno `quit()`, jak i `exit()` bazują na module `site`, dlatego nie zaleca się ich używania w środowiskach produkcyjnych. Lepszym rozwiązaniem jest użycie `sys.exit()`, opisane poniżej.

2. Wykorzystanie `sys.exit()`

Gdy w kodzie wywołamy `sys.exit()`, Python wygeneruje wyjątek `SystemExit`. Funkcja ta przyjmuje opcjonalny argument, który określa kod zakończenia (domyślnie 0). Możemy również przekazać obiekt, co spowoduje wygenerowanie kodu wyjścia 1 oraz wypisanie tekstu z obiektu na standardowym wyjściu błędów.

import sys 

for num in range(10):
if num == 5:
sys.exit("Program zakończony na żądanie")
print(num)

Efekt działania powyższego kodu:

Podobnie jak `exit` i `quit`, `sys.exit()` również wywołuje wyjątek `SystemExit`. W efekcie możemy użyć albo `sys.exit()` lub bezpośrednio wywołać `SystemExit()`. Obie te opcje pozwalają przekazać opcjonalny argument.

Jeżeli nie rozumiesz działania powyższego kodu, warto odświeżyć podstawy programowania w Pythonie.

3. Użycie `os._exit()`

Trzecia metoda zakończenia działania programu to specjalna funkcja `os._exit()`. Przyjmuje ona opcjonalny argument, określający kod wyjścia. Funkcja ta pochodzi z modułu `os` i powoduje natychmiastowe zamknięcie procesu, bez przeprowadzania standardowych operacji porządkujących, które normalnie wykonuje Python.

Ponieważ `os._exit()` przerywa działanie programu bez standardowego czyszczenia, należy używać jej z dużą ostrożnością, w konkretnych przypadkach. Jak podaje dokumentacja Pythona, dobrym przykładem jest proces potomny, powstały po rozwidleniu (utworzony za pomocą `os.fork()`).

Poniżej przykład zastosowania `os._exit()` do zamknięcia programu:

import os
import sys

def child_process():
print("Proces potomny działa.")
os._exit(0)

def main():
print("Proces macierzysty działa.")

try:
pid = os.fork()

if pid == 0:

child_process()
else:

print(f"Proces macierzysty kontynuuje działanie, PID procesu potomnego: {pid}")
except OSError as e:
print(f"Błąd rozwidlenia: {e}")
sys.exit(1)

print("Proces macierzysty zakończył działanie.")

if __name__ == "__main__":
main()

Kod ten wygeneruje następujący wynik:

Której metody należy użyć do zatrzymania programu w Pythonie?

Python oferuje kilka metod na zamknięcie programu. Większość z nich robi to samo. To upraszcza wybór odpowiedniej metody wyjścia z programu, szczególnie podczas nauki języka Python.

Podsumowując, najczęściej zalecaną metodą do zamykania aplikacji w Pythonie jest `sys.exit()`. Generuje ona wyjątek `SystemExit` i pozwala opcjonalnie ustawić kod zakończenia.

Funkcje `quit()` oraz `exit()` są bardziej odpowiednie do używania w trybie REPL Pythona. Należy ich unikać w środowisku produkcyjnym, gdyż zależą od modułu `site`, który nie zawsze jest dostępny. `os._exit()` powinno się używać tylko w szczególnych sytuacjach, np. gdy mamy do czynienia z rozwidlaniem procesów.


newsblog.pl