6

Команды выхода в Python: зачем так много и когда их использовать?

1

Похоже, что в Python существует множество различных команд для остановки выполнения скрипта.
Вот список тех, которые я нашел: quit(), exit(), sys.exit(), os._exit()

Я что-то пропустил? В чем разница между ними? Когда стоит использовать каждую из этих команд?

2 ответ(ов)

0

Разные способы выхода из программы

os._exit():

  • Завершает процесс без вызова обработчиков очистки.

exit(0):

  • Чистый выход без ошибок или проблем.

exit(1):

  • Произошла ошибка или проблема, и поэтому программа завершает свою работу.

sys.exit():

  • Позволяет завершить выполнение программы, освобождая ресурсы и уменьшая использование памяти после её завершения.

quit():

  • Закрывает Python файл.

Итог

Фактически, все эти способы делают одно и то же, однако выбор зависит от конкретной ситуации.

Я не думаю, что вы что-то упустили, и рекомендую привыкнуть к quit() или exit().

Используйте sys.exit() и os._exit() в основном для работы с большими файлами или если вы управляете терминалом через Python.

В остальных случаях в основном подходите к exit() или quit().

0

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__ любого выражения, введенного в командной строке.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь