Только что понял, что есть, exit(0)что обсуждается в этом вопросе, а также с подчеркиванием _exit(0), здесь
кардамон
Хорошая вещь об этих кодах состоит в том, что они могут использоваться непосредственно в ifвыражении в bashобертке, поэтому можно предпринять дальнейшие действия независимо от того, успешно ли выполняется программа Python или она подняла ненулевой статус.
SDsolar
странно, если 0 - ложь, а 1 - истина в Python, можно подумать, что числа означают обратное
Моника Хеднек
Ответы:
249
0 и 1 - коды выхода.
exit(0) означает чистый выход без каких-либо ошибок / проблем
exit(1) означает, что была какая-то проблема / ошибка / проблема, и именно поэтому программа закрывается.
Это не специфично для Python и довольно распространено. Ненулевой код выхода обрабатывается как ненормальный выход, и иногда код ошибки указывает на проблему. Нулевой код ошибки означает успешный выход.
Это полезно для других программ, оболочки, вызывающей стороны и т. Д., Чтобы узнать, что случилось с вашей программой, и действовать соответствующим образом.
@Faizan: код выхода - это 8-битное значение в Unix. Если вы вызываете exit(-1), значение эквивалентно exit(255)- младшие 8 битов передаются вызывающей программе (оболочка или что-то еще).
Джонатан Леффлер
4
Обратите внимание, что в соответствии с документами , exit()добавляется siteмодулем, и не должны использоваться программами. Вместо этого используйте sys.exit()или даже raise SystemExit, если вы не хотите импортировать другой модуль.
daviewales
2
Из-за кодов выхода из Unix / Linux я думал, что 0 - это Истина, а 1 - Ложное значение в условиях Python.
Вляльцин
19
Это определяет состояние выхода из программы, когда она завершает работу (обычно 0 для успеха и 1 для ошибки).
Он не уникален для Python, и точный эффект зависит от вашей операционной системы и от того, как вызывается программа (хотя в 99% случаев, если вы просто запускаете скрипты Python, это не имеет значения).
Стандартное соглашение для всех программ на C, включая Python, предназначено для exit(0)указания успеха и / exit(1)или любого другого ненулевого значения (в диапазоне 1..255) для указания сбоя. Любое значение вне диапазона 0..255 обрабатывается по модулю 256 (состояние выхода сохраняется в 8-битном значении). Иногда это будет считаться подписанным (так что вы можете увидеть -128, -127 и т. Д.), Но чаще это считается неподписанным.
Этот статус доступен для кода, который вызвал Python. Это соглашение применяется ко всем платформам, хотя значение ненулевого статуса выхода может различаться на разных платформах.
Число, которое вы передаете exit()функции, является просто кодом возврата вашей программы, который передается операционной системе. С точки зрения вашей программы, нет никакой разницы: выполнение завершится в обоих случаях, а значение, предоставленное функции, будет передано ОС. Но некоторые инструменты и скрипты учитывают код завершения программы. Большинство инструментов возвращают 0, когда они успешны, и ненулевые, чтобы указать на ошибку.
Таким образом, если ваша программа будет запускаться из сценария, автоматизированного инструмента или другого программного обеспечения, которое учитывает код возврата (например, IDE), вы должны быть осторожны с тем, что вы возвращаете.
В случае сомнений просто верните 0, чтобы показать, что все в порядке.
exit()
в документах , которая заняла меня навсегда, чтобы найти.The site module (which is imported automatically during startup, except if the -S command-line option is given) adds several constants to the built-in namespace. They are useful for the interactive interpreter shell and should not be used in programs
вместо этого используйтеsys.exit()
exit(0)
что обсуждается в этом вопросе, а также с подчеркиванием_exit(0)
, здесьif
выражении вbash
обертке, поэтому можно предпринять дальнейшие действия независимо от того, успешно ли выполняется программа Python или она подняла ненулевой статус.Ответы:
0 и 1 - коды выхода.
exit(0)
означает чистый выход без каких-либо ошибок / проблемexit(1)
означает, что была какая-то проблема / ошибка / проблема, и именно поэтому программа закрывается.Это не специфично для Python и довольно распространено. Ненулевой код выхода обрабатывается как ненормальный выход, и иногда код ошибки указывает на проблему. Нулевой код ошибки означает успешный выход.
Это полезно для других программ, оболочки, вызывающей стороны и т. Д., Чтобы узнать, что случилось с вашей программой, и действовать соответствующим образом.
источник
exit(-1)
, значение эквивалентноexit(255)
- младшие 8 битов передаются вызывающей программе (оболочка или что-то еще).exit()
добавляетсяsite
модулем, и не должны использоваться программами. Вместо этого используйтеsys.exit()
или дажеraise SystemExit
, если вы не хотите импортировать другой модуль.Это определяет состояние выхода из программы, когда она завершает работу (обычно 0 для успеха и 1 для ошибки).
Он не уникален для Python, и точный эффект зависит от вашей операционной системы и от того, как вызывается программа (хотя в 99% случаев, если вы просто запускаете скрипты Python, это не имеет значения).
источник
Стандартное соглашение для всех программ на C, включая Python, предназначено для
exit(0)
указания успеха и /exit(1)
или любого другого ненулевого значения (в диапазоне 1..255) для указания сбоя. Любое значение вне диапазона 0..255 обрабатывается по модулю 256 (состояние выхода сохраняется в 8-битном значении). Иногда это будет считаться подписанным (так что вы можете увидеть -128, -127 и т. Д.), Но чаще это считается неподписанным.Этот статус доступен для кода, который вызвал Python. Это соглашение применяется ко всем платформам, хотя значение ненулевого статуса выхода может различаться на разных платформах.
источник
Число, которое вы передаете
exit()
функции, является просто кодом возврата вашей программы, который передается операционной системе. С точки зрения вашей программы, нет никакой разницы: выполнение завершится в обоих случаях, а значение, предоставленное функции, будет передано ОС. Но некоторые инструменты и скрипты учитывают код завершения программы. Большинство инструментов возвращают 0, когда они успешны, и ненулевые, чтобы указать на ошибку.Таким образом, если ваша программа будет запускаться из сценария, автоматизированного инструмента или другого программного обеспечения, которое учитывает код возврата (например, IDE), вы должны быть осторожны с тем, что вы возвращаете.
В случае сомнений просто верните 0, чтобы показать, что все в порядке.
источник
exit(0)
Это приводит к успешному завершению программы.exit(1)
: Это приводит к выходу программы с системным значением.На многих системах
exit(1)
сигнализирует о каком-то сбое, однако нет никаких гарантий.Насколько я помню, стандарт C распознает только три стандартных значения выхода:
EXIT_SUCCESS
- успешное завершениеEXIT_FAILURE
- неудачное завершение0
-- такой же какEXIT_SUCCESS
источник