2012-02-24 15 views
90

Jaka jest różnica między exit(0) i exit(1) w Pythonie?Różnica między wyjściem (0) a wyjściem (1) w języku Python

Próbowałem rozglądać się, ale nie znalazłem konkretnego pytania w tych wierszach. Jeśli odpowiedź już została udzielona, ​​wystarczyłoby łącze.

+7

Oto link do ['exit()' w dokumentacji] (https://docs.python.org/3/library/constants.html# constants-added-by-the-site-module), co zabrało mnie na zawsze. –

+2

należy pamiętać: ['Moduł witryny (który jest importowany automatycznie podczas uruchamiania, chyba że podano opcję wiersza poleceń -S) dodaje kilka stałych do wbudowanej przestrzeni nazw. Są użyteczne dla interaktywnej powłoki interpretera i nie powinny być używane w programach "] (https://docs.python.org/3/library/constants.html#constants-added-by-the-site-module), zamiast tego , użyj ['sys.exit()'] (https://docs.python.org/2/library/sys.html#sys.exit) – Udi

+0

Właśnie zdałem sobie sprawę, że istnieje 'exit (0)', o którym mowa w tym pytanie, a także jedno z podkreśleniem '_exit (0)', różnica jest wyjaśniona [tutaj] (https://stackoverflow.com/questions/9591350/what-is-difference-between-sys-exit0-and-os- exit0) – cardamom

Odpowiedz

147

0 i 1 to kody wyjścia.

exit(0) oznacza czystej wyjście bez żadnych błędów/problemów

exit(1) oznacza, że ​​był jakiś problem/błąd/problem i dlatego program wychodzenia.

To nie jest specyficzne dla Pythona i jest dość powszechne. Niezerowy kod wyjścia jest traktowany jako nieprawidłowe wyjście, a czasami kod błędu wskazuje, na czym polegał problem. Kod błędu zero oznacza udane wyjście.

Jest to przydatne w przypadku innych programów, powłoki, dzwoniącego itp., Aby dowiedzieć się, co stało się z programem i postępować zgodnie z nim.

+4

A co z wyjściem (-1)? – Faizan

+7

@Faizan: Kod zakończenia jest wartością 8-bitową na systemie Unix. Jeśli wywołasz 'exit (-1)', wartość jest równoważna 'exit (255)' - najmniej znaczące 8 bitów jest przekazywane do programu wywołującego (powłoka lub cokolwiek innego). –

15

To określa exit status programu po jego zakończeniu (zazwyczaj 0 oznacza sukces i 1 oznacza błąd).

To nie jest unikalne dla Pythona, a dokładny efekt zależy od systemu operacyjnego i sposobu wywoływania programu (chociaż w 99% przypadków, jeśli tylko uruchamiasz skrypty w języku Python, nie ma znaczenia).

7

Standardowa konwencja dla wszystkich programów w C, w tym Python, jest dla exit(0) wskazać sukces, a exit(1) lub inna niezerowa wartość (w zakresie 1..255), aby wskazać błąd. Każda wartość spoza zakresu 0..255 jest traktowana modulo 256 (status wyjścia zapisywany jest w 8-bitowej wartości). Czasami będzie to traktowane jako podpisane (aby można było zobaczyć -128, -127 itd.), Ale częściej jest traktowane jako niepodpisane.

Ten status jest dostępny dla kodu, który wywołał język Python. Ta konwencja dotyczy różnych platform, chociaż znaczenie niezerowego statusu wyjścia może być różne na różnych platformach.

5

Numer przekazywany do funkcji exit() to po prostu kod powrotu programu, który jest nadawany systemowi operacyjnemu. Z punktu widzenia programu nie ma różnicy: wykonanie zakończy się w obu przypadkach, a wartość dostarczona do funkcji zostanie przekazana do systemu operacyjnego. Ale niektóre narzędzia i skrypty uwzględniają kod wyjścia programu. Większość narzędzi zwraca 0, gdy się powiedzie i niezerowo, aby wskazać błąd.

Tak więc, jeśli Twój program będzie uruchamiany ze skryptu, narzędzia automatycznego lub z innego oprogramowania uwzględniającego kod powrotu (takiego jak IDE), musisz uważać na to, co zwrócisz.

Jeśli masz wątpliwości, po prostu zwróć 0, aby zaznaczyć, że wszystko jest w porządku.

0

: To powoduje, że program kończy pracę z pomyślnym zakończeniem.

exit(1): Spowoduje to wyjście programu ze znaczeniem specyficznym dla systemu.

Na wielu systemach, exit(1) sygnalizuje jakiś błąd, jednak nie ma gwarancji, że .

Jak sobie przypominam, standardowy C rozpoznaje tylko trzy standardowe wyjście wartości:

  • EXIT_SUCCESS - udane zakończenie
  • EXIT_FAILURE - nieudane zakończenie
  • 0 - tak samo jak EXIT_SUCCESS
Powiązane problemy