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 sysfor 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 sysdef 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
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.