Команды выхода в Python: зачем так много и когда их использовать?
Похоже, что в Python существует множество различных команд для остановки выполнения скрипта.
Вот список тех, которые я нашел: quit()
, exit()
, sys.exit()
, os._exit()
Я что-то пропустил? В чем разница между ними? Когда стоит использовать каждую из этих команд?
2 ответ(ов)
Разные способы выхода из программы
os._exit()
:
- Завершает процесс без вызова обработчиков очистки.
exit(0)
:
- Чистый выход без ошибок или проблем.
exit(1)
:
- Произошла ошибка или проблема, и поэтому программа завершает свою работу.
sys.exit()
:
- Позволяет завершить выполнение программы, освобождая ресурсы и уменьшая использование памяти после её завершения.
quit()
:
- Закрывает Python файл.
Итог
Фактически, все эти способы делают одно и то же, однако выбор зависит от конкретной ситуации.
Я не думаю, что вы что-то упустили, и рекомендую привыкнуть к quit()
или exit()
.
Используйте sys.exit()
и os._exit()
в основном для работы с большими файлами или если вы управляете терминалом через Python.
В остальных случаях в основном подходите к exit()
или quit()
.
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__
любого выражения, введенного в командной строке.
Как клонировать список, чтобы он не изменялся неожиданно после присваивания?
Сохранить график в файл изображения вместо его отображения
Преобразование списка словарей в DataFrame pandas
Как отсортировать список/кортеж списков/кортежей по элементу на заданном индексе
Как отменить последнюю миграцию?