Odpowiedzi:
Pozwól, że podam kilka informacji na ich temat:
quit()po prostu podnosi SystemExitwyjątek.
Ponadto, jeśli go wydrukujesz, wyświetli się komunikat:
>>> print (quit)
Use quit() or Ctrl-Z plus Return to exit
>>>
Ta funkcja została włączona, aby pomóc osobom, które nie znają Pythona. W końcu jedną z najbardziej prawdopodobnych rzeczy, które nowicjusz spróbuje zamknąć, jest pisanie w Pythonie quit.
Niemniej jednak niequit należy go używać w kodzie produkcyjnym. Jest tak, ponieważ działa tylko wtedy, gdy moduł jest załadowany. Zamiast tego tej funkcji należy używać tylko w tłumaczu.site
exit()jest aliasem dla quit(lub odwrotnie). Istnieją razem, aby Python był bardziej przyjazny dla użytkownika.
Ponadto po wydrukowaniu wyświetla komunikat:
>>> print (exit)
Use exit() or Ctrl-Z plus Return to exit
>>>
Jednak, podobnie jak quit, exitjest uważany za zły do użycia w kodzie produkcyjnym i powinien być zarezerwowany do użycia w tłumaczu. Wynika to z faktu, że również zależy od sitemodułu.
sys.exit()podnosi również SystemExitwyjątek. Oznacza to, że jest to to samo quiti exitpod tym względem.
Jednak w przeciwieństwie do tych dwóch, sys.exitjest uważany za dobry do użycia w kodzie produkcyjnym. Dzieje się tak, ponieważ sysmoduł zawsze tam będzie.
os._exit()wychodzi z programu bez wywoływania procedur czyszczących, opróżniania buforów stdio itp . Dlatego nie jest to standardowy sposób na wyjście i powinien być używany tylko w szczególnych przypadkach. Najczęstszym z nich jest proces potomny utworzony przez os.fork.
Zauważ, że spośród czterech podanych metod tylko ta jest wyjątkowa w tym, co robi.
Podsumowując, wszystkie cztery metody wychodzą z programu. Jednak pierwsze dwa są uważane za nieodpowiednie do użycia w kodzie produkcyjnym, a ostatni to niestandardowy, brudny sposób, który jest używany tylko w specjalnych scenariuszach. Tak więc, jeśli chcesz wyjść z programu normalnie, iść z trzeciej metody: sys.exit.
Lub, moim zdaniem, jeszcze lepiej, możesz po prostu zrobić bezpośrednio to, co sys.exitdzieje się za kulisami i uruchomić:
raise SystemExit
W ten sposób nie musisz sysnajpierw importować .
Jednak ten wybór jest po prostu stylowy i zależy wyłącznie od Ciebie.
quiti opuść powłokę, exitdopóki sys.exittego nie zrobisz .
sys.exit()nie jest niezawodnym sposobem zamknięcia. Jeśli zostanie wywołany w wątku, zakończy tylko ten wątek, chyba że znajduje się w wątku głównym. Może to prowadzić do wielu przypadków, w których program jest kontynuowany, ponieważ wywołanie nie było w głównym wątku, zwłaszcza że niektórzy tłumacze niewidzialnie nawiążą połączenia.
endpolecenia, które by to zrobiło raise SystemExit. Nie rozumiem, dlaczego nie może być czegoś tak prostego, jak w języku BASIC.
printzmieniono z instrukcji na funkcję. Łatwo jest dodać składnię, ale jest to kosztem złożoności.
sys.exit()?
Funkcje * quit() , exit()i sys.exit()działają w ten sam sposób: zgłaszają SystemExitwyjątek. Więc nie ma istotnej różnicy, poza tym, że sys.exit()jest zawsze dostępny, ale exit()i quit()są dostępne tylko wtedy, gdy sitemoduł jest importowany.
Ta os._exit()funkcja jest wyjątkowa, wychodzi natychmiast bez wywoływania funkcji czyszczenia (na przykład nie opróżnia buforów). Jest to przeznaczone do wysoce wyspecjalizowanych zastosowań ... w zasadzie tylko u dziecka po os.fork()rozmowie telefonicznej.
Użyj exit()lub quit()w REPL.
Użyj sys.exit()w skryptach lub raise SystemExit()jeśli wolisz.
Posługiwać się os._exit() dla procesów potomnych, aby wyjść po wywołaniu do os.fork().
Wszystkie z nich można wywoływać bez argumentów lub można określić status wyjścia, np. exit(1)Lub raise SystemExit(1)wyjść ze statusem 1. Uwaga: programy przenośne są ograniczone do kodów statusu wyjścia w zakresie 0–255, jeśli raise SystemExit(256)w wielu systemach będzie to zostanie obcięty, a proces zakończy się ze statusem 0.
* Właściwie, quit()i exit()są płatne na żądanie obiekty przykład, ale myślę, że to w porządku, aby nazwać ich funkcje.
os._exit():
exit(0):
exit(1):
sys.exit():
quit():
Zasadniczo wszyscy robią to samo, jednak zależy to również od tego, po co to robisz.
Nie sądzę, żebyś coś pomijał i zalecałbym przyzwyczajenie się do quit()lub exit().
Należałoby użyć sys.exit(), a os._exit()przede wszystkim, jeśli używasz dużych plików lub używasz Pythona kontrolować terminalu.
W przeciwnym razie użyj głównie exit()lub quit().
sys.exit jest kanonicznym sposobem na wyjście.
Wewnętrznie sys.exitpo prostu podnosi SystemExit. Jednak sprawdzanie sys.exitjest bardziej idiomatyczne niż SystemExitbezpośrednie przebijanie .
os.exit to niskopoziomowe wywołanie systemowe, które kończy się bezpośrednio bez wywoływania żadnych procedur czyszczących.
quiti exitistnieją tylko po to, aby zapewnić łatwe wyjście z pytania w Pythonie. Dotyczy to nowych użytkowników lub użytkowników, którzy przypadkowo wprowadzili monit w Pythonie i nie chcą znać właściwej składni. Prawdopodobnie spróbują pisać na klawiaturze exitlub quit. Chociaż to nie wyjdzie z interpretera, przynajmniej wydaje komunikat, który mówi im o wyjściu:
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
Jest to w zasadzie tylko hack wykorzystujący fakt, że interpreter wypisuje __repr__dowolne wyrażenie, które wpiszesz w monicie.
os.abort()