Автор оригинала: Pankaj Kumar.
Всем привет. В этой статье мы посмотрим на некоторые функции, которые можно считать удобными для выполнения этой задачи – Выйти из программы Python Отказ
При программировании на Python нам иногда нужно остановить выполнение программы на основе определенных условий. В этой статье мы обсудим различные способы завершения программы на Python.
In this python tutorial, you will learn about the Python exit command with a few examples. Here we will check:
- Python quit() function
- Python exit() function
- Python sys.exit() function
- Python os.exit() function
- Python raise SystemExit
- Program to stop code execution in python
- Difference between exit() and sys.exit() in python
Let us check out the exit commands in python like quit(), exit(), sys.exit() commands.
Back to top
Toggle table of contents sidebar
В Python есть несколько операторов, которые позволяют менять поведение
циклов по умолчанию.
Оператор break#
Оператор позволяет досрочно прервать цикл:
- break прерывает текущий цикл и продолжает выполнение следующих выражений
- если используется несколько вложенных циклов, break прерывает внутренний цикл
и продолжает выполнять выражения, следующие за блоком
* break может использоваться в циклах for и while
Пример с циклом for:
Пример с циклом while:
Использование break в примере с запросом пароля (файл
check_password_with_while_break.py):
‘Введите имя пользователя: ‘
‘Введите пароль: ‘
‘Пароль слишком короткий
‘Пароль содержит имя пользователя
‘Пароль для пользователя
# завершает цикл while
‘Введите пароль еще раз: ‘
Теперь можно не повторять строку
в каждом ответвлении,
достаточно перенести ее в конец цикла.
И, как только будет введен правильный пароль, break выведет программу из
цикла while.
Оператор continue#
Оператор continue возвращает управление в начало цикла. То есть,
continue позволяет «перепрыгнуть» оставшиеся выражения в цикле и перейти
к следующей итерации.
«Это никто не увидит»
«Текущее значение: «
Использование continue в примере с запросом пароля (файл
check_password_with_while_continue.py):
‘Введите имя пользователя: ‘
‘Введите пароль: ‘
‘Пароль слишком короткий
‘Пароль содержит имя пользователя
‘Пароль для пользователя
‘Введите пароль еще раз: ‘
Тут выход из цикла выполнятся с помощью проверки флага
password_correct. Когда был введен правильный пароль, флаг выставляется
равным True, и с помощью continue выполняется переход в начало цикла,
перескочив последнюю строку с запросом пароля.
Результат выполнения будет таким:
$ python check_password_with_while_continue.py
Введите имя пользователя: nata
Введите пароль: nata12
Пароль слишком короткий
Введите пароль еще раз: natalksdjflsdjf
Пароль содержит имя пользователя
Введите пароль еще раз: asdfsujljhdflaskjdfh
Пароль для пользователя nata установлен
Оператор pass#
Оператор ничего не делает. Фактически, это такая заглушка для
объектов.
Например, может помочь в ситуации, когда нужно прописать
структуру скрипта. Его можно ставить в циклах, функциях, классах. И это
не будет влиять на исполнение кода.
Пример использования pass:
Try/except#
Если вы повторяли примеры, которые использовались ранее, то наверняка
были ситуации, когда выскакивала ошибка. Скорее всего, это была ошибка
синтаксиса, когда не хватало, например, двоеточия.
Как правило, Python довольно понятно реагирует на подобные ошибки, и их
можно исправить.
Тем не менее, даже если код синтаксически написан правильно, могут
возникать ошибки. В Python эти ошибки называются исключения (exceptions).
В данном случае возникло два исключения: ZeroDivisionError и
TypeError.
Чаще всего можно предсказать, какого рода исключения возникнут во время
исполнения программы.
Например, если программа на вход ожидает два числа, а на выходе выдает
их сумму, а пользователь ввел вместо одного из чисел строку, появится
ошибка TypeError, как в примере выше.
Python позволяет работать с исключениями. Их можно перехватывать и
выполнять определенные действия в том случае, если возникло исключение.
Когда в программе возникает исключение, она сразу завершает работу.
Для работы с исключениями используется конструкция :
«You can’t divide by zero»
‘t divide by zero
Конструкция try работает таким образом:
- сначала выполняются выражения, которые записаны в блоке try
- если при выполнения блока try не возникло никаких исключений, блок except пропускается,
и выполняется дальнейший код - если во время выполнения блока try в каком-то месте возникло исключение,
оставшаяся часть блока try пропускается
если в блоке except указано исключение, которое возникло, выполняется код в блоке exceptесли исключение, которое возникло, не указано в блоке except,
выполнение программы прерывается и выдается ошибка - если в блоке except указано исключение, которое возникло, выполняется код в блоке except
- если исключение, которое возникло, не указано в блоке except,
выполнение программы прерывается и выдается ошибка
Обратите внимание, что строка в блоке try не выводится:
«Let’s divide some numbers»
«You can’t divide by zero»
‘s divide some numbers
‘t divide by zero
В конструкции try/except может быть много except, если нужны разные
действия в зависимости от типа ошибки.
Например, скрипт divide.py делит два числа введенных пользователем:
# -*- coding: utf-8 -*-
«Введите первое число: »
«Введите второе число: »
«Пожалуйста, вводите только числа»
«На ноль делить нельзя»
Примеры выполнения скрипта:
$ python divide.py
Введите первое число: 3
Введите второе число: 1
Результат: 3
$ python divide.py
Введите первое число: 5
Введите второе число: 0
На ноль делить нельзя
$ python divide.py
Введите первое число: qewr
Введите второе число: 3
Пожалуйста, вводите только числа
В данном случае исключение ValueError возникает, когда пользователь
ввел строку вместо числа, во время перевода строки в число.
Если нет необходимости выводить различные сообщения на ошибки ValueError
и ZeroDivisionError, можно сделать так (файл divide_ver2.py):
В блоке except можно не указывать конкретное исключение или
исключения. В таком случае будут перехватываться все исключения.
Это делать не рекомендуется!
Try/except/else#
В конструкции try/except есть опциональный блок else. Он выполняется в
том случае, если не было исключения.
Например, если необходимо выполнять в дальнейшем какие-то операции с
данными, которые ввел пользователь, можно записать их в блоке else (файл
divide_ver3.py):
# -*- coding: utf-8 -*-
«Введите первое число: »
«Введите второе число: »
«Результат в квадрате: «
Try/except/finally#
Блок finally — это еще один опциональный блок в конструкции try. Он
выполняется всегда, независимо от того, было ли исключение или нет.
Сюда ставятся действия, которые надо выполнить в любом случае. Например,
это может быть закрытие файла.
Файл divide_ver4.py с блоком finally:
# -*- coding: utf-8 -*-
«Введите первое число: »
«Введите второе число: »
«Результат в квадрате: »
«Вот и сказочке конец, а кто слушал — молодец.»
Когда использовать исключения#
Как правило, один и тот же код можно написать и с использованием
исключений, и без них.
Например, этот вариант кода:
«Введите число: »
«Введите второе число: »
«Поддерживаются только числа»
«На ноль делить нельзя»
Можно переписать таким образом без try/except (файл
try_except_divide.py):
«Введите число: »
«Введите второе число: »
«На ноль делить нельзя»
«Поддерживаются только числа»
Далеко не всегда аналогичный вариант без использования исключений
будет простым и понятным.
Важно в каждой конкретной ситуации оценивать, какой вариант кода более
понятный, компактный и универсальный — с исключениями или без.
Если вы раньше использовали какой-то другой язык программирования, есть
вероятность, что в нём использование исключений считалось плохим тоном.
В Python это не так. Чтобы немного больше разобраться с этим вопросом,
посмотрите ссылки на дополнительные материалы в конце этого раздела.
Raise#
Иногда в коде надо сгенерировать исключение, это можно сделать так:
«При выполнении команды возникла ошибка»
Встроенные исключения#
В Python есть много встроенных исключений,
каждое из которых генерируется в
определенной ситуации.
Например, TypeError обычно генерируется когда ожидался один тип данных, а передали другой
ValueError когда значение не соответствует ожидаемому:
В любой, особенно большой, программе могут возникать ошибки, приводящие к ее неработоспособности или к тому, что программа делает не то, что должна. Причин возникновения ошибок много.
Программист может сделать ошибку в употреблении самого языка программирования. Другими словами, выразиться так, как выражаться не положено. Например, начать имя переменной с цифры или забыть поставить двоеточие в заголовке сложной инструкции. Подобные ошибки называют синтаксическими, они нарушают синтаксис и пунктуацию языка. Интерпретатор Питона, встретив ошибочное выражение, не знает как его интерпретировать. Поэтому останавливает выполнение программы и выводит соответствующее сообщение, указав на место возникновения ошибки:
В терминологии языка Python здесь возникло исключение, принадлежащее классу SyntaxError. Согласно документации Python синтаксические ошибки все-таки принято относить к ошибкам, а все остальные – к исключениям. В некоторых языках программирования не используется слово «исключение», а ошибки делят на синтаксические и семантические. Нарушение семантики обычно означает, что, хотя выражения написаны верно с точки зрения синтаксиса языка, программа не работает так, как от нее ожидалось. Для сравнения. Вы можете грамотным русским языком сказать несколько предложений, но по смыслу это будет белиберда, или вас поймут не так, как хотелось бы.
В Python не говорят о семантических ошибках, говорят об исключениях. Их множество. В этом уроке мы рассмотрим некоторые из них, в последующих встретимся с еще несколькими.
Если вы попытаетесь обратиться к переменной, которой не было присвоено значение, что в случае Python означает, что переменная вообще не была объявлена, она не существует, то возникнет исключение NameError
most recent call last
Последнюю строку сообщения можно перевести как «Ошибка имени: имя ‘b’ не определено».
Следующие два исключения, о которых следует упомянуть, и с которыми вы уже могли встретиться в предыдущих уроках, это ValueErrorTypeError – ошибка значения и ошибка типа.
В примере строку «Hi» нельзя преобразовать к целому числу. Возникает исключение ValueError, потому что функция int() не может преобразовать такое значение.
Число 8 и строка «3» принадлежат разным типам, операнд сложения между которыми не поддерживается. При попытке их сложить возникает исключение TypeError
Деление на ноль вызывает исключение ZeroDivisionError
division by zero
Обработка исключений. Оператор try-except
Когда ошибки в программе возникают в процессе написания кода или его тестирования, то код исправляется программистом так, чтобы ошибок не возникало. Однако нередко действия пользователя приводят к тому, что в программе возникает исключение. Например, программа ожидает ввод числа, но человек ввел букву. Попытка преобразовать ее к числу приведет к возбуждению исключения ValueError, и программа аварийно завершится.
На этот случай в языках программирования, в том числе Python, существует специальный оператор, позволяющий перехватывать возникающие исключения и обрабатывать их так, чтобы программа продолжала работать или корректно завершала свою работу.
В Питоне такой перехват выполняет оператор try-except. «Try» переводится как «попытаться», «except» – как исключение. Словами описать его работу можно так: «Попытаться сделать то-то и то-то, если при этом возникло исключение, то сделать вот это и это.» Его конструкция похожа на условный оператор с веткой else. Рассмотрим пример:
«Введите целое число: «
«Что-то пошло не так»
Исключительная ситуация может возникнуть в третьей строчке кода, когда значение переменной n преобразуется к целому числу. Если это невозможно, то дальнейшее выполнение выражений в теле try прекращается. В данном случае выражение print(«Удачно») выполнено не будет. При этом поток выполнения программы перейдет на ветку except и выполнит ее тело.
Если в теле try исключения не возникает, то тело ветки except не выполняется.
Вот пример вывода программы, когда пользователь вводит целое число:
А здесь – когда вводит не то, что ожидалось:
Есть одна проблема. Код выше обработает любое исключение. Однако в теле try могут возникать разные исключения, и у каждого из них должен быть свой обработчик. Поэтому более правильным является указание типа исключения после ключевого слова except
‘Введите целое число: ‘
«Все нормально. Вы ввели число»
«Вы ввели не целое число»
Теперь если сработает тело except мы точно знаем, из-за чего возникла ошибка. Но если в теле try возникнет еще какое-нибудь исключение, то оно не будет обработано. Для него надо написать отдельную ветку except. Рассмотрим программу:
«Введите делимое: «
«Введите делитель: «
«Нельзя вводить строки»
«Нельзя делить на ноль»
При ее выполнении исключения могут возникнуть в трех строчках кода: где происходит преобразование введенных значений к вещественным числам и в месте, где происходит деление. В первом случае может возникнуть ValueError, во втором – ZeroDivisionError. Каждый тип исключения обрабатывается своей веткой except
Несколько исключений можно сгруппировать в одну ветку и обработать совместно:
«или делить на ноль»
У оператора обработки исключений, кроме except, могут быть еще ветки finallyelse (не обязательно обе сразу). Тело finally выполняется всегда, независимо от того, выполнялись ли блоки except в ответ на возникшие исключения или нет. Тело else сработает, если исключений в try не было, то есть не было переходов на блоки except
«Вы что-то попутали с вводом»
# когда в блоке try не возникло исключения
# выполняется в любом случае
Посмотрите, как выполняется программа в случае возникновения исключения и без этого:
В данном уроке изложены не все особенности обработки исключений. Так в более крупных программах, содержащих несколько уровней вложенности кода, функции, модули и классы, исключения могут обрабатываться не по месту их возникновения, а передаваться дальше по иерархии вызовов.
Также исключение может возникнуть в блоке exceptelsefinally, и тогда им нужен собственный обработчик. Модифицируем немного предыдущую программу и специально сгенерируем исключение в теле except
По началу может показаться, что все нормально. Исключение, генерируемое выражением 3 / 0 будет обработано веткой except ZeroDivisionError. Однако это не так. Эта ветка обрабатывает только исключения, возникающие в блоке try, к которому она сама относится. Вот вывод программы, если ввести не целое число:
During handling of the above exception
another exception occurred
Мало того, что не было обработано деление на ноль, поскольку тело except ValueError неудачно завершилось, само исключение ValueError посчиталось необработанным. Решение проблемы может быть, например, таким:
Здесь в тело except вложен свой внутренний обработчик исключений.
Напишите программу, которая запрашивает ввод двух значений. Если хотя бы одно из них не является числом, то должна выполняться конкатенация, то есть соединение, строк. В остальных случаях введенные числа суммируются.
Примеры выполнения программы:
Введение в тему
Зачастую возникают ситуации, когда программа или скрипт работают не так, как задумывал программист. Чаще всего это бывает из-за ввода неожиданных данных. Для обработки таких ситуаций в языке программирования Python есть конструкция try except else finally. Это называется обработкой исключений и позволяет контролировать аварийные случаи. Об этом мощном инструменте мы и поговорим в данном уроке.
Что такое исключения
Если говорить именно о Питоне, то сложность ещё и в том, что это не компилируемый, а интерпретируемый язык, то есть код выполняется «на лету», строка за строкой. Это означает, что у Пайтон-программиста нет возможности отловить ошибки на этапе компиляции. Ещё одна сложность заключается в том, что Python – язык со строгой, но динамической типизацией. Частично это решается в последних версиях языка средством под названием «аннотирование типов», но полностью проблемы не устраняет.
И так, существуют следующие виды ошибок:
- Синтаксические – когда программист нарушает правила самого языка, к примеру, допускает опечатку в ключевом слове;
- Логические – когда в коде используется не верная логика;
- Ввода – когда программист предполагал от пользователя ввода одних данных, а введены другие. К примеру, создатель сайта задумывал, что число в форме будет указано с использованием точки в качестве разделителя, а пользователь ввёл «3,14». Именно этот вид ошибок – излюбленная лазейка хакеров.
Синтаксические ошибки – самые простые, поскольку интерпретатор сам сообщит Вам о них при попытке запустить скрипт.
Простой пример, напечатали команду print с большой буквы:
Логические ошибки – самые сложные в обработке. Сложность в том, что скрипт запускается и не выдаёт никаких исключений, но результат работы отличается от ожидаемого. В чём причина и где её искать? Понятно, что использован не правильный алгоритм. В таких ситуациях можно посоветовать разбить алгоритм на части и проверять значение переменных в контрольных точках. Вот пример такой ошибки:
В этом примере программист хотел сделать сортировку пузырьком, но допустил ошибку. А Вы сможете её найти?
Ошибки ввода, как уже говорилось, это ошибки, чаще всего возникающие из-за того, что программист и пользователь не поняли друг друга. Вот код примера, приведённого выше:
Как вы видите, интерпретатор «выбрасывает» исключение «ValueError» — ошибка значения и останавливает выполнение кода.
Перехват исключений
Если Вам не подходит стандартное поведение языка при возникновении исключений – остановка выполнения, Вы можете перехватить исключение и обработать его. Для таких ситуаций и существует конструкция try except. Данный механизм Python позволяет контролировать непредвиденные ситуации и действовать исходя из новых условий. Проиллюстрируем это используя предыдущий пример:
x_var = input(‘Введите число и мы его разделим на 10
‘)
try:
print(‘Результат деления:’, float(x_var) / 10)
except ValueError:
print(‘Вы ввели число с запятой, а надо с точкой’)
print(‘Программа завершена’)
# Вывод:
Введите число и мы его разделим на 10
3,14
Вы ввели число с запятой, а надо с точкой
Программа завершена
Как Вы можете заметить, программа выполнена полностью. Об этом свидетельствует последняя строка вывода. В блок try необходимо заключить тот участок кода, в котором может возникнуть исключение, а в блоке except – его обработку. Обратите внимание, что в блоке except можно не указывать вид ошибки и тогда будет обработано любое возникшее в блоке try исключение.
Несколько блоков except
Можно использовать несколько блоков except и обрабатывать в каждом блоке отдельный вид ошибки. Немного перепишем программу из предыдущего примера:
x_var = input(‘Введите число и мы разделим на него 10
‘)
try:
print(‘Результат деления:’, 10 / float(x_var))
except ValueError:
print(‘Вы ввели число с запятой, а надо с точкой’)
except ZeroDivisionError:
print(‘Вы ввели ноль, но на него делить нельзя’)
print(‘Программа завершена’)
# Вывод:
Введите число и мы разделим на него 10
0
Вы ввели ноль, но на него делить нельзя
Программа завершена
Хорошей практикой является написание сперва блоков для конкретных ошибок, а затем для общих случаев, поскольку всех ситуаций не предусмотреть:
x_var = input(‘Введите число и мы разделим на него 10
‘)
try:
Print(‘Результат деления:’, 10 / float(x_var))
except ValueError:
print(‘Вы ввели число с запятой, а надо с точкой’)
except ZeroDivisionError:
print(‘Вы ввели ноль, но на него делить нельзя’)
except:
print(‘Не знаю что, но что-то точно пошло не так’)
print(‘Программа завершена’)
# Вывод:
Введите число и мы разделим на него 10
10
Не знаю что, но что-то точно пошло не так
Программа завершена
Вложенные блоки и else
Блоки try-except можно вкладывать друг в друга, если в этом есть необходимость.
Здесь же мы используем блок else. Этот блок должен содержать код, который выполнится если не возникнет исключений.
x_var = input(‘Введите число и мы разделим на него 10
‘)
try:
result = 10 / float(x_var)
try:
print(‘Результат деления:’, result)
except:
print(‘Не знаю что, но что-то точно пошло не так’)
else:
print(‘Полёт нормальный’)
except ValueError:
print(‘Вы ввели число с запятой, а надо с точкой’)
except ZeroDivisionError:
print(‘Вы ввели ноль, но на него делить нельзя’)
else:
print(‘Программа выполнена без ошибок’)
print(‘Программа завершена’)
# Вывод:
Введите число и мы разделим на него 10
10
Результат деления: 1.0
Полёт нормальный
Программа выполнена без ошибок
Программа завершена
Кстати, здесь допущена логическая ошибка. Найдёте?
Встречаются ситуации, когда необходимо выполнить какую-то часть кода в независимости от того, было исключение или нет. Для этого существует блок finally:
try:
result = 10 / float(x_var)
try:
Print(‘Результат деления:’, result)
except:
print(‘Не знаю что, но что-то точно пошло не так’)
else:
print(‘Полёт нормальный’)
except ValueError:
print(‘Вы ввели число с запятой, а надо с точкой’)
except ZeroDivisionError:
print(‘Вы ввели ноль, но на него делить нельзя’)
finally:
print(‘Программа завершена’)
# Вывод:
Введите число и мы разделим на него 10
10
Не знаю что, но что-то точно пошло не так
Программа завершена
Управление исключениями
В Пайтоне есть возможность создавать свои виды исключений. Ниже мы рассмотрим как это делать, а ещё такую важную вещь как логгирование.
Пользовательские исключения
В Python есть ключевое слово raise. Нужно оно для того чтоб самостоятельно вызывать исключения:
Такие ошибки тоже можно ловить в try и обрабатывать в except:
Для того чтобы создать свой тип исключения, необходимо объявить новый класс и унаследовать его от базового типа Exception. Текст ошибки можно передавать используя дандер метод __str__:
Так же, текст ошибки можно передавать переопределяя родительский атрибут message:
Раз мы объявили метод __init__, следует сказать, что в него можно передавать аргументы:
Запись в лог
Часто для отладки программ используют логгирование. Это вывод, чаще всего в отдельный файл, каких-то сообщений, содержащих информацию о том, как программа работает. В том числе, писать в лог можно и текст исключений. В Питоне для этого создали специальный модуль и даже включили его в стандартную библиотеку. Сперва его надо импортировать в Ваш код, а затем указать тип лога:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug(» Сообщения про отладку»)
logging.info(» Информационные сообщения»)
logging.warning(» Предупреждения»)
logging.error(» Сообщения с ошибками»)
logging.critical(» Ну очень важные сообщения»)
# Вывод:
DEBUG:root: Сообщения про отладку
INFO:root: Информационные сообщения
WARNING:root: Предупреждения
ERROR:root: Сообщения с ошибками
CRITICAL:root: Ну очень важные сообщения
Параметр level= указывает, сообщения какого уровня заносить в лог. К примеру, если указать ‘level= logging.ERROR’, то логгироваться будут только сообщения уровня error и critical. Объединим логгирование и обработку исключений:
Иерархия исключений
В Python есть иерархия исключений. Это происходит из-за того, что их классы наследуются друг от друга. Вот полный список:
BaseException — базовое исключение, от которого берут начало все остальные
+SystemExit — исключение, порождаемое функцией sys.exit при выходе из программы
+KeyboardInterrupt — порождается при прерывании программы пользователем (обычно сочетанием клавиш Ctrl+C)
+GeneratorExit — порождается при вызове метода close объекта generator
++StopIteration — порождается встроенной функцией next, если в итераторе больше нет элементов
++StopAsyncIteration — используется для остановки асинхронного прохода
++ArithmeticError — арифметическая ошибка
++AssertionError— выражение в функции assert ложно
++AttributeError — объект не имеет данного атрибута (значения или метода)
++BufferError— операция, связанная с буфером, не может быть выполнена
++EOFError— функция наткнулась на конец файла и не смогла прочитать то, что хотела
++ImportError — не удалось импортирование модуля или его атрибута
++LookupError— некорректный индекс или ключ
++MemoryError— недостаточно памяти
++NameError — не найдено переменной с таким именем
++OSError — ошибка, связанная с системой
++ReferenceError — попытка доступа к атрибуту со слабой ссылкой
++RuntimeError — возникает, когда исключение не попадает ни под одну из других категорий
++SyntaxError — синтаксическая ошибка
++SystemError — внутренняя ошибка
++TypeError — операция применена к объекту несоответствующего типа
++ValueError — функция получает аргумент правильного типа, но некорректного значения
++Warning — предупреждение
Остановить выполнение функции с помощью исключения SystemExit
Вместо того, чтобы использовать sys.exit() метод, вы можете напрямую поднять SystemExit исключение для прекращения выполнения программы, как показано ниже.
try:
def myFunction():
print(«Inside the funcion. This satement will be printed»)
raise SystemExit
print(«Inside the function. This satement will not be printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
except SystemExit:
print(«Function terminated.»)
Outside the function. Calling the function.
Inside the funcion. This satement will be printed
Function terminated.
Мы можем использовать sys.exit() метод и SystemExit исключение для прекращения выполнения функции. Однако, если мы не обработаем исключение, выполнение программы Python будет остановлено, как вы видели в первом примере с использованием функции sys.exit().
os Модуль предоставляет нам _exit() функция, чтобы остановить выполнение программы Python. Здесь нужно понимать, что os._exit() функция убивает интерпретатор Python, а не просто останавливает программу. Вы можете наблюдать это на следующем примере.
import os
def myFunction():
print(«Inside the funcion. This satement might get printed»)
os._exit(0)
print(«Inside the function. This satement might get printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
В приведенном выше выводе вы можете заметить, что ядро было убито после выполнения команды o.s._exit() функция.
os._exit() Функция работает, отправляя сигнал ядру операционной системы. При выполнении он отправляет сигнал ядру, чтобы убить интерпретатор Python. Как только ядро операционной системы примет сигнал и выполнит команду для уничтожения интерпретатора Python, все программы Python будут завершены. Однако существует вероятность того, что несколько заявлений, написанных после os._exit() Функция в программе Python также может выполняться в тот момент, когда ядро получает сигнал и завершает работу интерпретатора Python.
Python os. exit() function
So first, we will import os module. Then, the os.exit() method is used to terminate the process with the specified status. We can use this method without flushing buffers or calling any cleanup handlers.
import os
for i in range(5):
if i == 3:
print(exit)
os._exit(0)
print(i)
After writing the above code (python os.exit() function), the output will appear as a “ 0 1 2 “. Here, it will exit the program, if the value of ‘i’ equal to 3 then it will print the exit message.
You can refer to the below screenshot python os.exit() function.
Python quit() function
In python, we have an in-built quit() function which is used to exit a python program. When it encounters the quit() function in the system, it terminates the execution of the program completely.
It should not be used in production code and this function should only be used in the interpreter.
for val in range(0,5):
if val == 3:
print(quit)
quit()
print(val)
After writing the above code (python quit() function), Ones you will print “ val ” then the output will appear as a “ 0 1 2 “. Here, if the value of “val” becomes “3” then the program is forced to quit, and it will print the quit message.
You can refer to the below screenshot python quit() function.
Python sys. exit() function
In python, sys.exit() is considered good to be used in production code unlike quit() and exit() as sys module is always available. It also contains the in-built function to exit the program and come out of the execution process. The sys.exit() also raises the SystemExit exception.
import sys
marks = 12
if marks < 20:
sys.exit(«Marks is less than 20»)
else:
print(«Marks is not less than 20»)
After writing the above code (python sys.exit() function), the output will appear as a “ Marks is less than 20 “. Here, if the marks are less than 20 then it will exit the program as an exception occurred and it will print SystemExit with the argument.
You can refer to the below screenshot python sys.exit() function.
Использование функции EXIT ()
Помимо вышеупомянутых методов, мы можем использовать встроенные Выход () Функция бросить и выйти из цикла выполнения программы в Python.
for x in range(1,10):
print(x*10)
exit()
Функция EXIT () может рассматриваться как альтернатива функции Quit (), которая позволяет нам завершить выполнение программы.
Рекомендуемое обучение Python
Курс: Python 3 для начинающих
Более 15 часов видеоконтента с инструкциями для начинающих. Узнайте, как создавать приложения для реального мира, и освойте основы.
Завершите программу Python с помощью функции exit()
Вместо quit() функцию, вы также можете использовать функцию exit() функция для завершения программы Python. Обе функции работают одинаково.
def myFunction():
print(«Inside the funcion. This satement might get printed»)
exit(0)
print(«Inside the function. This satement might get printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
Остановить выполнение функции с помощью модуля sys
sys Модуль предоставляет нам различные функции для выполнения задач. Мы также можем остановить выполнение функции в Python, используя sys модуль. Для этого мы будем использовать exit() функция, определенная в sys модуль.
exit() функция принимает целое число в качестве входного аргумента, задающего статус выхода. Значение по умолчанию для входного аргумента равно 0. После выполнения sys.exit() функция повышает SystemExit исключение.
Чтобы остановить выполнение функции с помощью sys.exit() функцию, мы выполним exit() функция внутри функции, которую мы хотим остановить. После этого программа запустится SystemExit исключение, и выполнение кода остановится. Вы можете наблюдать это на следующем примере.
import sys
def myFunction():
print(«Inside the funcion. This satement will be printed»)
sys.exit(0)
print(«Inside the function. This satement will not be printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
В приведенном выше примере вы можете заметить, что программа запускается в SystemExit исключение после того, как sys.exit() функция выполняется.
Чтобы гладко обработать исключение, вы можете поймать SystemExit исключение с использованием Python try, кроме блоков, как показано ниже.
import sys
try:
def myFunction():
print(«Inside the funcion. This satement will be printed»)
sys.exit(0)
print(«Inside the function. This satement will not be printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
except SystemExit:
print(«Function terminated.»)
В приведенном выше коде оператор после myFunction() в блоке try не будет выполняться, так как управление программой передается блоку кроме SystemExit происходит исключение.
Python Sys. exit () Функция
Модуль Python Sys Содержит встроенный функцию для выхода из программы и выйти из процесса выполнения – sys.exit () функция.
Функция Sys.exit () может использоваться в любой момент времени без необходимости беспокоиться о коррупции в коде.
Давайте посмотрим на приведенный ниже пример, чтобы понять sys.exit () функция.
import sys
x = 50
if x != 100:
sys.exit(«Values do not match»)
else:
print(«Validation of values completed!!»)
Использование Quit () Функция
Встроенный Quit () Функция Предлагается функциями Python, может использоваться для выхода из программы Python.
Как только система столкнутся с функцией Quit (), она полностью завершает выполнение программы.
for x in range(1,10):
print(x*10)
quit()
Как видно выше, после первой итерации цикла для цикла интерпретатор встречает функцию Quit () и завершает программу.
Завершение программы с помощью функции quit() в Python
Вместо os._exit() функцию, мы можем использовать функцию quit() функция для завершения программы Python. quit() функция работает аналогично os._exit() функция.
def myFunction():
print(«Inside the funcion. This satement might get printed»)
quit()
print(«Inside the function. This satement might get printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
Результат приведенного выше кода аналогичен os._exit() пример.
Difference between exit() and sys. exit() in python
- exit() – If we use exit() in a code and run it in the shell, it shows a message asking whether I want to kill the program or not. The exit() is considered bad to use in production code because it relies on site module.
- sys.exit() – But sys.exit() is better in this case because it closes the program and doesn’t ask. It is considered good to use in production code because the sys module will always be there.
In this Python tutorial, we learned about the python exit command with example and also we have seen how to use it like:
Program to stop code execution in python
To stop code execution in python first, we have to import the sys object, and then we can call the exit() function to stop the program from running. It is the most reliable way for stopping code execution. We can also pass the string to the Python exit() method.
After writing the above code (program to stop code execution in python), the output will appear as a “ list length is less than 5 “. If you want to prevent it from running, if a certain condition is not met then you can stop the execution. Here, the length of “my_list” is less than 5 so it stops the execution.
You can refer to the below screenshot program to stop code execution in python.
Какую функцию следует использовать для завершения программы Python?
os._exit() функция, exit() функция, и quit() функция завершает работу интерпретатора Python. Следовательно, если вы запускаете несколько программ параллельно, вам не следует использовать эти функции. В противном случае все программы будут остановлены, так как эти функции завершают работу самого интерпретатора.
Вы можете использовать sys.exit() метод и SystemExit исключение вместе с блоками try-except для завершения программы. Чтобы завершить функцию, вы можете просто использовать оператор return.
Остановить выполнение функции с помощью оператора return
Чтобы остановить выполнение функции в любой момент, вы можете вернуть значение из функции с помощью оператора return. Как только оператор return выполнен, выполнение функции останавливается, и код после оператора return не выполняется. Вы можете наблюдать это на следующем примере.
def myFunction():
print(«Inside the funcion. This satement will be printed»)
return -1
print(«Inside the function. This satement will not be printed.»)
print(«Outside the function. Calling the function.»)
myFunction()
print(«Outside the function after function returned.»)
Outside the function. Calling the function.
Inside the funcion. This satement will be printed
Outside the function after function returned.
В приведенном выше коде оператор после оператора return в функции myFunction() никогда не будет казнен. Выполнение функции останавливается, как только выполняется оператор return.
Python raise SystemExit
The SystemExit is an exception which is raised, when the program is running needs to be stop.
for i in range(8):
if i == 5:
print(exit)
raise SystemExit
print(i)
After writing the above code (python raise SystemExit), the output will appear as “ 0 1 2 3 4 “. Here, we will use this exception to raise an error. If the value of ‘i’ equal to 5 then, it will exit the program and print the exit message.
You can refer to the below screenshot python raise SystemExit.
Python exit() function
for val in range(0,5):
if val == 3:
print(exit)
exit()
print(val)
After writing the above code (python exit() function), Ones you will print “ val ” then the output will appear as a “ 0 1 2 “. Here, if the value of “val” becomes “3” then the program is forced to exit, and it will print the exit message too.
You can refer to the below screenshot python exit() function.
Заключение
По этому, мы подошли к концу этой темы. Выход () и Quit () Функции не могут быть использованы в операционных и производственных кодах. Поскольку эти две функции могут быть реализованы только в том случае, если модуль сайта импортируется.
Таким образом, из вышеупомянутых методов наиболее предпочтительным методом является sys.exit () метод.
Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом.
До этого, счастливого обучения !!
Надеюсь, вам понравилось читать эту статью. Следите за информативными статьями.