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


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.