Команды выхода в 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?
'pip' не распознан как командa внутреннего или внешнего формата
Почему statistics.mean() работает так медленно?
Преобразование строки даты JSON в datetime в Python
Есть ли разница между поднятием экземпляра класса Exception и самого класса Exception?