파이썬은 스크립트 실행을 중지하기 위해 많은 다른 명령을 지원하는 것 같습니다.
내가 찾은 선택 사항은 다음과 같습니다 quit()
, exit()
, sys.exit()
,os._exit()
내가 놓친 적이 있습니까? 그들 사이의 차이점은 무엇입니까? 언제 사용 하시겠습니까?
답변
그들에 대한 정보를 제공하겠습니다.
-
quit()
단순히SystemExit
예외 를 제기합니다 .또한 인쇄하면 다음과 같은 메시지가 나타납니다.
>>> print (quit) Use quit() or Ctrl-Z plus Return to exit >>>
이 기능은 Python을 모르는 사람들을 돕기 위해 포함되었습니다. 결국 초보자가 파이썬을 종료하려고 시도 할 가능성이 가장 높은 것 중 하나는 입력하는 것입니다
quit
.그럼에도 불구하고,
quit
해야 하지 생산 코드에서 사용할 수.site
모듈이로드 된 경우에만 작동하기 때문 입니다. 대신이 함수는 인터프리터에서만 사용해야합니다. -
exit()
에 대한 별명입니다quit
(또는 그 반대). 파이썬을보다 사용자 친화적으로 만들기 위해 함께 존재합니다.또한 인쇄시 메시지도 표시됩니다.
>>> print (exit) Use exit() or Ctrl-Z plus Return to exit >>>
그러나 같은
quit
,exit
생산 코드에 사용하는 것이 나쁜 것으로 간주되며 인터프리터에서 사용하기 위해 예약해야한다.site
모듈에 의존하기 때문 입니다. -
sys.exit()
또한SystemExit
예외를 발생시킵니다. 이는 해당 측면에서quit
와 동일하고 동일하다는 것을 의미합니다exit
.그러나이 두 가지와 달리
sys.exit
프로덕션 코드에서 사용하는 것이 좋습니다. 때문이다sys
모듈은 항상있을 것입니다. -
os._exit()
정리 핸들러, 플러시 stdio 버퍼 등을 호출하지 않고 프로그램 을 종료합니다 . 따라서 종료하는 표준 방법이 아니며 특수한 경우에만 사용해야합니다. 이들 중 가장 일반적인 것은에 의해 생성 된 자식 프로세스에os.fork
있습니다.주어진 네 가지 방법 중이 방법 만 수행하는 방식이 고유합니다.
요약하면, 네 가지 방법 모두 프로그램을 종료합니다. 그러나 처음 두 개는 프로덕션 코드에서 사용하기에 좋지 않은 것으로 간주되고 마지막 두 개는 특수 시나리오에서만 사용되는 비표준적이고 더러운 방법입니다. 따라서 프로그램을 정상적으로 종료하려면 세 번째 방법을 사용하십시오 sys.exit
.
또는 내 의견으로는 더 나은 sys.exit
것은, 배후에서 직접 수행 하고 실행하는 것입니다.
raise SystemExit
이렇게하면 sys
먼저 가져올 필요가 없습니다 .
그러나이 선택은 단순히 스타일 중 하나이며 순전히 당신에게 달려 있습니다.
답변
함수 * quit()
, exit()
및 sys.exit()
함수는 같은 방식으로 SystemExit
예외를 발생시킵니다. 즉 제외하고 그래서 진짜 차이가없고, sys.exit()
항상 사용할 수 있지만 exit()
및 quit()
경우에만 사용할 수있는 site
모듈을 가져옵니다.
이 os._exit()
함수는 특별하며 정리 함수를 호출하지 않고 즉시 종료합니다 (예 : 버퍼를 비우지 않음). 이것은 고도로 전문화 된 유스 케이스를 위해 설계되었습니다. 기본적으로 os.fork()
통화 후 아이에게만 해당됩니다 .
결론
-
REPL에서
exit()
또는 사용하십시오quit()
. -
sys.exit()
스크립트에서 사용 하거나raise SystemExit()
원하는 경우에 사용하십시오 . -
를
os._exit()
호출 한 후 종료 할 하위 프로세스에 사용하십시오os.fork()
.
이들 모두는 예를 들면, 인수없이 호출 할 수 있습니다, 또는 당신은 종료 상태를 지정할 수 있습니다 exit(1)
또는 raise SystemExit(1)
휴대용 프로그램, 0 ~ 255 범위에서 종료 상태 코드에있는 경우를 제한됩니다 1. 주 상태 종료에 raise SystemExit(256)
많은 시스템이 의지에 잘리고 프로세스는 실제로 상태 0으로 종료됩니다.
각주
* 사실, quit()
및 exit()
호출 인스턴스 개체입니다,하지만 난 그들 함수를 호출 괜찮아 생각합니다.
답변
다른 출구 수단
os._exit()
:
- 정리 핸들러를 호출하지 않고 프로세스를 종료하십시오.
exit(0)
:
- 오류 / 문제없이 깨끗한 출구.
exit(1)
:
- 문제 / 오류 / 문제가 있었으므로 프로그램이 종료됩니다.
sys.exit()
:
- 시스템과 파이썬이 종료 될 때; 프로그램이 실행 된 후 사용되는 메모리가 적음을 의미합니다.
quit()
:
- 파이썬 파일을 닫습니다.
요약
기본적으로 그들은 모두 똑같은 일을하지만, 당신이하는 일에 달려 있습니다.
나는 당신이 아무것도 버리지 않았다고 생각하며 quit()
또는에 익숙해지는 것이 좋습니다 exit()
.
다음을 사용 sys.exit()
하고 os._exit()
당신이 큰 파일을 사용 또는 터미널 제어하기 위해 파이썬을 사용하는 주로합니다.
그렇지 않으면 주로 exit()
또는을 사용하십시오 quit()
.
답변
sys.exit
정식 종료 방법입니다.
내부적 sys.exit
으로 상승 SystemExit
합니다. 그러나 전화 sys.exit
는 SystemExit
직접 올리는 것보다 관용적 입니다.
os.exit
정리 핸들러를 호출하지 않고 직접 종료되는 저수준 시스템 호출입니다.
quit
및 exit
파이썬 프롬프트에서 쉬운 방법을 제공하는 유일한 존재한다. 이것은 새로운 사용자 나 실수로 Python 프롬프트를 입력 한 사용자에게 적합하며 올바른 구문을 알고 싶지 않습니다. 그들은 exit
또는을 입력하려고 할 것 quit
입니다. 이것은 인터프리터를 종료하지는 않지만 최소한 탈출구를 알려주는 메시지를 발행합니다.
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
이것은 본질적으로 인터프리터 __repr__
가 프롬프트에 입력 한 표현을 인터프리터가 인쇄한다는 사실을 활용하는 해킹입니다 .