파이썬 커맨드 라인에서 나가기


152

파이썬 명령 줄을 끝내려면 exit ()를 입력해야합니다. exit를 입력하면

Use exit() or Ctrl-Z plus Return to exit

일반적으로을 입력 exit하면 프로그램을 종료하려고합니다. 명령 줄을 종료하려고 할 때 인터프리터에서 왜 위의 오류가 발생합니까? 왜 그냥 종료되지 않습니까? 나는 그것이 중요하지 않고 어리석은 질문이라는 것을 알고 있지만 궁금합니다.


함수가 ()마지막에 호출되는 방식과 관련이있을 수도 있습니다. 그렇지 않으면 변수 일 수도 있고 일종의 객체 일 수도 있습니다.
— summea

그러나 통역사는 내가 종료하려고한다는 것을 알고 그 메시지를 인쇄합니다. 그렇지 않으면 오류 메시지가 인쇄되었을 것입니다. 내가 종료하려고한다는 것을 알고 있다면 종료 할 수 있습니다.
— Ank

1
exit 또는 exit ()는 전 세계에서 찾은 설치 중 약 20 %의 오류를 발생시킵니다. CTRL + Z + return 만 일관되게 작동합니다.
— Paulo Carvalho

답변:


37

내 파이썬에서 인터프리터 exit는 실제로 문자열이며 함수가 아닙니다 'Use Ctrl-D (i.e. EOF) to exit.'. 다음을 입력하여 통역사를 확인할 수 있습니다type(exit)

활성 파이썬에서 일어나고있는 일은 exit가 함수라는 것입니다. 함수를 호출하지 않으면 객체의 문자열 표현이 인쇄됩니다. 이것은 반환 된 객체의 기본 동작입니다. 디자이너가 사람들이 인터프리터를 종료하기 위해 exit를 입력하려고 시도한다고 생각했기 때문에 exit 함수의 문자열 표현을 유용한 메시지로 만들었습니다. 당신은 입력하여이 동작을 확인할 수 있습니다 str(exit)또는 print exit.


14
Ctrl-Z는 Unix 계열 시스템에서 Ctrl-D를 수행하는 Windows (잘, DOS)에서 수행하는 작업입니다.
— Karl Knechtel

@KarlKnechtel 아, 알아서 반가워요. Windows에서 프로그래밍 경험이 거의 없습니다.
— Dunes

60

이것은 파이썬 프롬프트에서 나오는 가장 좋은 방법입니다.

출구()


4
나는이 답변에 대해 혼란 스럽습니다 ... 질문 자체는 이미 exit()작동 한다는 것을 알고 있으며 왜 exitParens가 없는지 작동하지 않는 이유를 알고 싶습니다 . 따라서이 답변은 질문의 일부를 반복하며 실제로 대답하지는 않습니다.
— Ben Lee

나는이 대답을 질문을 읽지 않은 것에 대해 공감하고 싶지만 대부분의 파이썬 설치에서는 이것이 맞다고 생각합니다. 사용자 가이 경우에는 작동하지 않는다고 말한 것이므로 권장하는 것은 ... 부적절합니다.
— person

37

exit명령 행에 입력하면 해당 이름의 변수를 찾은 다음 해당 변수를 호출 __repr__(또는 __str__)합니다. 일반적으로 다음과 같은 결과가 나타납니다.

<function exit at 0x00B97FB0>

그러나 그들은 exit객체가 유용한 메시지를 대신 표시 하도록 해당 기능을 재정의하기로 결정했습니다 . 그것이 멍청한 행동인지 아닌지에 대한 주관적인 질문이지만 그것이 "그냥 나가지 않는"한 가지 가능한 이유는 다음과 같습니다.

예를 들어 디버거에서 일부 코드를보고 있고 객체 중 하나가 exit함수를 참조한다고 가정합니다 . 디버거가 __repr__해당 개체 를 호출 하여 해당 기능을 표시 하려고 하면 프로그램이 갑자기 중지됩니다! 실제로 예상치 못한 일이 발생하고 이에 대응하기위한 조치가 더 복잡해질 수 있습니다 (예 : 명령 행으로 해당 동작을 제한하더라도 exit속성 이있는 객체를 인쇄하려고하면 어떻게됩니까?)


4
이 경우 실제 종료 함수는 import sys사용자가 아니면 sys.exit ()를 호출하여 인터프리터를 종료 하지 않는 한 범위 내에 있지 않습니다 .
— Michael Dillon

19

이 메시지는이다 __str__의 속성exit

다음 예제를보십시오.

1

>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit

2

>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

삼

>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

19

로 파이썬 인터프리터를 종료하는 것이 좋습니다 Ctrl-D. 파일 끝 또는 전송 끝의 이전 ASCII 코드입니다.


스크립트에 오류가 발생하면이 방법이 작동하지 않는 것 같습니다.
— blaylockbk

2
Ctrl-BreakWindows에서 일관되게 작동합니다. Ctrl-D또는 Ctrl-ZPython 2.7, 3.4, 3.6을 위해 Windows에서 일했습니다. 그러나 파이썬 3.7에서는 이것들이 작동을 멈추었고 가장 짧은 ASCII 시퀀스는 Ctrl-Z Enter입니다.
— Bob Stein

14

Windows에서 Anaconda 4.5 이상 및 Python 3.6 이상 사용

Ctrl+Z

또는

exit()

경우에 따라 사용해야 할 수도 있습니다

Ctrl+Break

컴퓨터에 Break키 가 없으면 여기 를 참조하십시오 .


8

인터프리터는 명령을 제공하는 쉘이 아니기 때문에 인터프리터입니다. 당신이주는 것은 파이썬 코드입니다.

파이썬의 구문은 exit그 자체로는 객체의 이름 이외의 다른 것이 될 수 없습니다. 단순히 객체를 참조하는 것은 실제로 아무것도 할 수 없습니다 (읽기 평가 인쇄 루프가 정상적으로 수행하는 것, 즉 객체의 문자열 표현을 표시하는 것 제외).


6

고칠 수 있습니다.

PYTHONSTARTUP다음을 사용하여 파이썬 파일에 연결

# Make exit work as expected
type(exit).__repr__ = type(exit).__call__

이것은 어떻게 작동합니까?

python 명령 행은 read-evaluate-print-loop입니다. 즉, 텍스트를 입력 할 때 해당 텍스트를 읽고 평가하여 결과를 인쇄합니다.

입력 exit()하면 호출 가능한 유형의 객체로 평가되고 site.Quitter해당 __call__기능을 호출 하여 시스템을 종료합니다. 입력 exit하면 동일한 호출 가능한 객체로 평가되며 호출하지 않고 객체가 인쇄되어 호출됩니다.__repr__ 합니다.

우리는 연결하여 활용할 수 __repr__에 __call__따라서 경우에도 우리는 입력 시스템을 종료의 예상 행동을 얻을 exit괄호없이합니다.


4
그들은 exit"유용한"문자열 을 인쇄 하려고 노력 했지만 자연스럽게 행하고 인터프리터를 종료하기 위해 바인딩 할 수는 없었습니다. 매번 괄호를 입력해야한다는 것은 실망스러운 일입니다. 이 답변은 완벽하며 대신 받아 들여 져야합니다.
— Przemek D

3

파이썬 터미널 에서 나가려면 간단히 다음을 수행하십시오.

exit()

대부분의 사용자가 호출하지 않고 종료와 혼합하는 기능이라고주의하십시오. 그러나 새로운 Pyhton 터미널은 메시지를 표시합니다 ...

또는 바로 가기로 다음을 누르십시오.

Ctrl + D

키보드에서 ...

Ctrl + D


1
당신이 말한 모든 것은 이미 위의 답변에서 다뤄졌습니다.
— Przemek D

0

파이썬 명령 줄에 갇혀 있고 위의 해결책 중 어느 것도 효과가 없다면 시도해보십시오. exit(2)


-1

"exit"는 파이썬 프로그램에서 사용할 수있는 유효한 변수 이름입니다. 해당 변수의 값을 보려고 할 때 인터프리터를 종료하고 싶지 않습니다.


에 할당 하지 않으면 exit이 기호를 무시하고 exit()더 이상 작동하지 않습니다. 이 기호는 유효한 변수 이름이지만 그러한 방식으로 사용하는 것은 좋은 습관이 아닌 것 같습니다.
— Przemek D
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.