Выход из командной строки python
обычно при вводе exit , вы хотели бы выйти из программы. Почему интерпретатор дает мне вышеуказанную ошибку, когда он знает, что я пытаюсь выйти из командной строки? Почему он просто не уходит? Я знаю, что это не имеет значения, и это глупый вопрос, но мне любопытно.
10 ответов
при вводе exit в командной строке, он находит переменную с таким именем и называет __repr__ (или __str__ ) на нем. Обычно, вы получите результат, как:
но они решили переопределить эту функцию для exit объект для отображения полезного сообщения. Является ли это глупым поведением или нет, это субъективный вопрос, но одна из возможных причин, почему он не «просто выходит»:
Предположим, вы смотрите на какой-то код в отладчике, для экземпляр, и один из объектов ссылается на
Это работает для меня, лучший способ выйти из подсказки python.
Я рекомендую вам выйти из интерпретатора Python с помощью Ctrl-D. Это старый код ASCII для конца файла или конца передачи.
это сообщение на exit
посмотрите на эти примеры :
поскольку интерпретатор не является оболочкой, в которой вы предоставляете команды, это — ну-интерпретатор. То, что вы ему даете, — это код Python.
синтаксис Python таков, что exit само по себе не может быть никем иным, кроме названия объекта. Просто ссылка на объект не может ничего сделать (кроме того, что обычно делает цикл read-eval-print; т. е. отображать строковое представление объекта).
в моем интерпретаторе python exit на самом деле строка, а не функция — ‘Use Ctrl-D (i.e. EOF) to exit.’ . Вы можете проверить своего переводчика, введя type(exit)
в активном python происходит то, что exit является функцией. Если вы не вызовете функцию, она распечатает строковое представление объекта. Это поведение по умолчанию для любого возвращаемого объекта. Просто дизайнеры подумали, что люди могут попытаться ввести exit для выхода из интерпретатора, поэтому они сделали строку представление функции exit полезное сообщение. Вы можете проверить это поведение, введя str(exit) или даже print exit .
вы можете это исправить.
ссылке PYTHONSTARTUP в файл python со следующим
как это работает?
командная строка python-это цикл чтения-оценки-печати, то есть при вводе текста он будет читать этот текст, оценивать его и в конечном итоге печатать результат.
при вводе exit() он оценивает вызываемый объект типа site.Quitter и называет его __call__ функция, которая выходит из системы. Когда вы печатаете exit он оценивает тот же вызываемый объект, не вызывая его, объект печатается, который в свою очередь вызывает __repr__ на объект.
мы можем воспользоваться этим путем связывания __repr__ to __call__ и таким образом получить ожидаемое поведение выхода из sustem, даже когда мы вводим exit без скобок.
на выезд из терминал Python, просто:
Пожалуйста, обратите внимание, что это функция, которая называется, как большинство пользователей смешать его с выходом без вызова, но новый Pyhton терминал показать сообщение.
или в качестве ярлыка нажмите:

Если вы застряли в командной строке python, и ни одно из вышеперечисленных решений не сработало для вас, попробуй!—0—>
«exit» — это допустимое имя переменной, которое может использоваться в вашей программе Python. Вы не захотите выходить из интерпретатора, когда вы просто пытаетесь увидеть значение этой переменной.
Exiting from python Command Line
Usually when you type exit , you would want to exit the program. Why does the interpreter give me the above error when it knows I am trying to exit the command line? Why doesn’t it just exit? I know it doesn’t matter and its a silly question but I am curious.
12 Answers 12
This works for me, best way to come out of python prompt.
In my python interpreter exit is actually a string and not a function — ‘Use Ctrl-D (i.e. EOF) to exit.’ . You can check on your interpreter by entering type(exit)
In active python what is happening is that exit is a function. If you do not call the function it will print out the string representation of the object. This is the default behaviour for any object returned. It’s just that the designers thought people might try to type exit to exit the interpreter, so they made the string representation of the exit function a helpful message. You can check this behaviour by typing str(exit) or even print exit .
When you type exit in the command line, it finds the variable with that name and calls __repr__ (or __str__ ) on it. Usually, you’d get a result like:
But they decided to redefine that function for the exit object to display a helpful message instead. Whether or not that’s a stupid behavior or not, is a subjective question, but one possible reason why it doesn’t «just exit» is:
Suppose you’re looking at some code in a debugger, for instance, and one of the objects references the exit function. When the debugger tries to call __repr__ on that object to display that function to you, the program suddenly stops! That would be really unexpected, and the measures to counter that might complicate things further (for instance, even if you limit that behavior to the command line, what if you try to print some object that have exit as an attribute?)
Выход из командной строки Python
Обычно, когда вы печатаете exit , вы хотите выйти из программы. Почему интерпретатор выдает мне вышеуказанную ошибку, когда узнает, что я пытаюсь выйти из командной строки? Почему он просто не выходит? Я знаю, что это не имеет значения и это глупый вопрос, но мне любопытно.
В моем Python интерпретатор exit на самом деле строка, а не функция — ‘Use Ctrl-D (i.e. EOF) to exit.’ . Вы можете проверить ваш переводчик, введя type(exit)
В активном питоне происходит то, что выход — это функция. Если вы не вызовете функцию, она выведет строковое представление объекта. Это поведение по умолчанию для любого возвращаемого объекта. Просто дизайнеры подумали, что люди могут попытаться набрать exit для выхода из интерпретатора, поэтому они сделали строковое представление функции выхода полезным сообщением. Вы можете проверить это поведение, набрав str(exit) или даже print exit .
Это работает для меня, лучший способ выйти из командной строки Python.
Когда вы вводите exit в командной строке, он находит переменную с этим именем и вызывает __repr__ (или __str__ ) на нем. Обычно вы получите такой результат:
Но они решили переопределить эту функцию, чтобы exit объект отображал полезное сообщение. Является ли это глупым поведением или нет, это субъективный вопрос, но одна из возможных причин, по которой он не «просто уходит»:
Предположим, вы просматриваете некоторый код в отладчике, например, и один из объектов ссылается на exit функцию. Когда отладчик пытается вызвать __repr__ этот объект для отображения этой функции, программа внезапно останавливается! Это было бы действительно неожиданно, и меры по противодействию этому могут еще больше усложнить ситуацию (например, даже если вы ограничите это поведение командной строкой, что если вы попытаетесь напечатать какой-либо объект, имеющий exit атрибут?)