Чтобы выйти из командной строки Python, я должен набрать exit (). Если я наберу выход, он говорит
Use exit() or Ctrl-Z plus Return to exit
Обычно, когда вы печатаете exit
, вы хотите выйти из программы. Почему интерпретатор выдает мне вышеуказанную ошибку, когда узнает, что я пытаюсь выйти из командной строки? Почему он просто не выходит? Я знаю, что это не имеет значения и это глупый вопрос, но мне любопытно.
()
в конце ... в противном случае это может быть (возможно) переменная ... или какой-то объект ...Ответы:
В моем Python интерпретатор
exit
на самом деле строка, а не функция -'Use Ctrl-D (i.e. EOF) to exit.'
. Вы можете проверить ваш переводчик, введяtype(exit)
В активном питоне происходит то, что выход - это функция. Если вы не вызовете функцию, она выведет строковое представление объекта. Это поведение по умолчанию для любого возвращаемого объекта. Просто дизайнеры подумали, что люди могут попытаться набрать exit для выхода из интерпретатора, поэтому они сделали строковое представление функции выхода полезным сообщением. Вы можете проверить это поведение, набрав
str(exit)
или дажеprint exit
.источник
Это работает для меня, лучший способ выйти из командной строки Python.
источник
exit()
работает, и они хотят знать, почемуexit
без паренов не работает. Так что этот ответ просто повторяет часть вопроса и фактически не отвечает на него.Когда вы вводите
exit
в командной строке, он находит переменную с этим именем и вызывает__repr__
(или__str__
) на нем. Обычно вы получите такой результат:Но они решили переопределить эту функцию, чтобы
exit
объект отображал полезное сообщение. Является ли это глупым поведением или нет, это субъективный вопрос, но одна из возможных причин, по которой он не «просто уходит»:Предположим, вы просматриваете некоторый код в отладчике, например, и один из объектов ссылается на
exit
функцию. Когда отладчик пытается вызвать__repr__
этот объект для отображения этой функции, программа внезапно останавливается! Это было бы действительно неожиданно, и меры по противодействию этому могут еще больше усложнить ситуацию (например, даже если вы ограничите это поведение командной строкой, что если вы попытаетесь напечатать какой-либо объект, имеющийexit
атрибут?)источник
import sys
, после чего вы вызываете sys.exit () для выхода из интерпретатора.Это сообщение является
__str__
атрибутомexit
посмотрите на эти примеры:
1
2
3
источник
Я рекомендую вам выйти из интерпретатора Python с помощью Ctrl-D. Это старый код ASCII для конца файла или конца передачи.
источник
Ctrl-Break
работает последовательно в Windows.Ctrl-D
илиCtrl-Z
работал в Windows для Python 2.7, 3.4, 3.6. Но в Python 3.7 они перестали работать, и самая короткая последовательность ASCII, которая выходит, естьCtrl-Z
Enter
.С использованием Anaconda 4.5+ и Python 3.6+ под Windows
или
В некоторых случаях вам, возможно, придется использовать
Если на вашем компьютере нет
Break
ключа, смотрите здесь .источник
Поскольку интерпретатор - это не оболочка, в которой вы предоставляете команды, это - хорошо, - интерпретатор. Вещи, которые вы ему даете, это код Python.
Синтаксис Python таков, что
exit
сам по себе не может быть ничем иным, как именем объекта. Простая ссылка на объект на самом деле ничего не может сделать (кроме того, что обычно делает цикл read-eval-print; т.е. отображает строковое представление объекта).источник
Вы можете это исправить.
Ссылка
PYTHONSTARTUP
на файл Python со следующимКак это работает?
Командная строка python представляет собой цикл чтения-оценки-печати, то есть, когда вы набираете текст, он будет читать этот текст, оценивать его и в конечном итоге выводить результат.
При вводе
exit()
он оценивается как вызываемый объект типаsite.Quitter
и вызывает его__call__
функцию, которая выходит из системы. Когда выexit
печатаете, он оценивает тот же вызываемый объект, не вызывая его, печатается объект, который в свою очередь вызывает__repr__
объект.Мы можем воспользоваться этим путем связывания
__repr__
с__call__
и , таким образом , получить ожидаемое поведение на выходе из системы , даже когда мы набираемexit
без скобок.источник
exit
напечатать «полезную» строку, но не могли просто связать ее, чтобы сделать естественную вещь и выйти из интерпретатора. Быть вынужденным вводить скобки каждый раз разочаровывает. Этот ответ идеален и должен быть принят.Чтобы выйти из терминала Python , просто выполните:
Пожалуйста, обратите внимание, что эта функция вызывается, поскольку большинство пользователей смешивают ее с выходом без вызова, но новый терминал Pyhton показывает сообщение ...
или как ярлык, нажмите:
на твоей клавиатуре ...
источник
Если вы застряли в командной строке Python и ни одно из перечисленных выше решений не помогло вам, попробуйте
exit(2)
источник
«exit» - это допустимое имя переменной, которое можно использовать в вашей программе на Python. Вы не захотите выходить из интерпретатора, когда вы просто пытаетесь увидеть значение этой переменной.
источник
exit
, вы переопределяете этот символ иexit()
больше не будете работать. Хотя этот символ является допустимым именем переменной, использование его таким способом не кажется хорошей практикой.