Как завершить программу в питоне
Перейти к содержимому

Как завершить программу в питоне

  • автор:

Завершение программы в Python

Однако, там не было объяснения какой метод лучше. Какой метод является наиболее «безаварийным»? И заодно: есть ли в Python понятие Autocloseable объектов? Если я сделаю ранее завершение программы, нужно ли мне будет закрывать файлы и т.д.?

Отслеживать
7,722 13 13 золотых знаков 25 25 серебряных знаков 54 54 бронзовых знака
задан 17 окт 2015 в 16:11
1,337 4 4 золотых знака 17 17 серебряных знаков 34 34 бронзовых знака
17 окт 2015 в 16:23
Спасибо! Лучшим решением является использование sys.exit()
17 окт 2015 в 16:28
на счет второго: лучше закрывать/завершать все операции перед завершением программы
17 окт 2015 в 16:32

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Короткий ответ:
Лучше использовать sys.exit()

Механизм завершения процесса в Python реализован через бросание исключения SystemExit , таким образом можно просто создать подобное исключение и программа завершится:

raise SystemExit # или даже передать число -- код ошибки завершения программы raise SystemExit(1) 

Функция exit и аналогичная ей quit созданы для удобства работы в интерактивном режиме и их не рекомендуется использовать внутри скриптов:

They are useful for the interactive interpreter shell and should not be used in programs.

По факту они также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:

>>> quit Use quit() or Ctrl-D (i.e. EOF) to exit >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit 

Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.

Есть также дополнительный метод для немедленного завершения программы: os._exit . У него довольно специфическая область применения, и там же есть замечание:

The standard way to exit is sys.exit(n)

Т.е. здесь даётся подтверждение того, что стандартный способ завершения программы — это вызов sys.exit .

Функция os.abort , упомянутая вами, использует механизм сигналов процессу. Конкретно при вызове этой функции будет передан сигнал SIGABRT , что в linux приведёт к завершению программы и созданию дампа памяти процесса. Подобное завершение рассматривается операционной системой как аварийное, поэтому не стоит использовать его для безаварийного завершения приложения.

По второй части вопроса. В Python есть развитая система контекстных менеджеров: классов, которые умеют работать с оператором with . Самое частое использование этого механизма встречается, вероятно, с файлами.

with open('filename') as my_file: print(my_file.read()) 

Этот код откроет файл, напечатает его содержимое на экран и закроет файл автоматически, даже если возникнет исключение при его печати.

Для классов, которые не приспособлены для работы с with есть функция closing в библиотеке contextlib . Из документации:

with closing(.open()) as f:

is equivalent to this:

f = .open() try: finally: f.close() 

Вот небольшой пример работы этой функции:

import contextlib class Closeable: def close(self): print('closed') with contextlib.closing(Closeable()): pass # печатает closed 

Теперь небольшое отступление о том, почему стоит использовать конструкцию with .

Известно, что программа завершится от любого необработанного исключения, а не только от SystemExit . Таким образом, если в вашем коде используются какие-то ресурсы, которые требуется правильным образом закрывать перед завершением работы, нужно оборачивать работу с ними в блоки try . finally . .

Однако, при использовании конструкции with это оборачивание происходит автоматически, и все ресурсы закрываются корректно.

Так как выход из программы — это всего лишь брошенное исключение, то и в случае использования функции sys.exit закрытие открытых в операторе with ресурсов произойдёт корректно:

with contextlib.closing(Closeable()): sys.exit() # напечатает closed 

Вы можете писать также и свои классы, предоставляющие ресурсы или классы, оборачивающие другие, которые нужно уметь закрывать автоматически. Для этого используются методы __enter__ и __exit__ .

  1. Похожий вопрос с англоязычного StackOverflow
  2. Функции, добавляемые модулем site
  3. Документация по конструкции with
  4. Документация по функции closing
  5. Документация по исключению SystemExit
  6. Документация по функции os._exit
  7. Документация по функции sys.exit
  8. Документация по функции os.abort
  9. Описание системного сигнала SIGABRT

Как остановить выполнение функции в Python?

Для остановки выполнения функции в Python можно использовать ключевой оператор return . Когда функция достигает этого оператора, она прекращает выполнение и возвращает указанное значение.

def func(): print('Часть функции, где код сработает') x = 11 return x # Функция возвращает значение переменной x и завершает свою работу. print('Эта часть функции - нет') y = 22 return y a = func() print(a) # => Часть функции, где код сработает # => 11 

Завершить программу

Не могу завершить программу
Не получается завершить работу кода, ругается на вывод функции, и как сделать автозаполнение строки.

Как завершить программу, если пользователь не введет значение переменной
Доброе время суток. господа! Прошу у ваш помощи. Есть у меня код: a = input() while len(a) !=.

Необходимо завершить поток по названию
Задача проста, но ответ искал и не нашел Запускаю поток Potok = Thread(target=tgbot.Do ,name =.

Subprocess — завершить процесс. python 3
Здравствуйте. В одной папке с программой лежит server.exe (приложение которое работает.

Как завершить выполнение функции?
Добрый день! Вот пример кода: def f() a = 5 b = 3 return def g() return.

Как завершить программу в питоне

MyTetra Share

Делитесь знаниями!

Как выйти из Python программы с кодом завершения

Время создания: 28.12.2012 16:53

Текстовые метки: Python, exit, код завершения, код ошибки, error code

Раздел: Компьютер — Программирование — Язык Python

Запись: xintrea/mytetra_syncro/master/base/1356699192umsewnnwqm/text.html на raw.github.com

В PHP есть команда:

В Python выход можно сделать так:

  • Использование UTF-8 в Python, устранение проблем с кодировкой
  • Основные конструкции языка Python
  • Пример стиля форматирования в Python
  • Оператор pass
  • Цикл с постусловием в Python
  • Как выйти из Python программы с кодом завершения
  • Python: пример открытия файла и перебора строк в нём
  • Python: работа со строками
  • Python: работа со списками
  • Python: тип данных bool и операторы сравнения
  • Python: запуск внешних программ и команд
  • Python: запуск внешней программы или команды
  • Работа с директориями и файлами в Python
  • Регулярные выражения в Python, простой пример
  • Python: выход из программы с кодом возврата
  • Python: преобразования типов, определение типа переменной
  • Python: списки, кортежи, словари
  • Аналог PHP-функции trim() в Python
  • Глобальные переменные в языке Python
  • Руководство по магическим методам в Питоне
  • Как в Python подсчитать количество страниц в PDF-файле
  • Основы языка программирования Python за 10 минут
  • Импорт скриптов (библиотек) в Python
  • Функции с неизвестным числом аргументов в Python и параметры по умолчанию
  • Классы в Python для PHP-разработчиков
  • Сериализация объектов в Python
  • Как в Python получить UNIX Timestamp
  • Особенности импорта модулей в Python
  • О порядке поиска пакетов и модулей для импорта в Python
  • Сводная таблица методов для базовых типов Python2 и Python3
  • Наследование в Python — краткое пояснение
  • Как в Python вызвать метод того же класса
  • Курс «Программирование на Python» от преподавателей СПбАУ РАН и ИТМО
  • Бесплатный курс pythontutor.ru (Питонтьютор)
  • Краткое описание библиотеки math
  • Как установить пакет PIP на компьютере без сети Интернет
  • Лямбда-функции в языке Python. Использование map/filter/reduce. Простое объяснение
  • Как настроить запуск главного скрипта в Python-проекте в VSCode
  • Как в VSCode в проекте на Python обеспечить навигацию по коду
  • Как в Python вызвать метод объекта по имени, которое написано в виде строковой переменной?
  • 10 ловушек в Python
  • 10 хитростей Python, о которых полезно знать
  • Django: основы работы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *