2010-09-28 3 views
25

Возможные Дубликаты:
Terminating a Python script
Terminating a Python ProgramPython, как выйти главная функция

Мой вопрос заключается в том, чтобы выйти в основной функции Python? Я пробовал 'return', но это дало ошибку SyntaxError: 'return' outside function. Может ли кто-нибудь помочь? Благодарю.

if __name__ == '__main__': 
    try: 
    if condition: 
    (I want to exit here) 
    do something 
    finally: 
    do something 
+1

Когда вы искали, что вы нашли? http://stackoverflow.com/search?q=%5Bpython%5D+exit. Все это похоже на нечто общее. –

+2

Я думаю, что люди пропустили суть этого вопроса. OP не ищет общий способ завершения программы. Он хочет знать, почему в этом случае «возврат» не работает для этой цели. – nobar

+0

Этот ответ на соответствующий вопрос представляется наиболее полезным здесь http://stackoverflow.com/a/953385/86967. – nobar

ответ

55

Вы можете использовать sys.exit() для выхода из середины основной функции.

Однако, я бы порекомендовал вам не делать никакой логики. Вместо этого поместите все в функцию и вызовите это с __main__ - тогда вы можете использовать возврат как обычно.

+6

+1 для добавления явной функции «все». Это также облегчает (1) вызов этого сценария из других сценариев (2) модульного теста. –

+5

Guido van Rossum поддерживает (или, по крайней мере, использовал) этот подход: http://www.artima.com/weblogs/viewpost.jsp?thread=4829 – ide

+0

Обычно я создаю функцию с именем «main» и помещаю ее в вверху файла. –

2

использование SYS модуля

import sys 
sys.exit() 
16

Вы не можете вернуться, потому что у вас нет функции. Вы можете exit.

import sys 
sys.exit(0) 

0 (по умолчанию) означает успех, отличное от нуля означает отказ.

+1

Почему 'sys.exit()' вместо простого 'exit()'? –

+1

Почему бы и нет? Кроме того, Python старается не предоставлять больше встроенных функций, чем это необходимо. –

+2

@ Просто, [docs] (http://docs.python.org/library/constants.html#exit) говорят, что не использовать простой «выход» в программах, и это, возможно, [ошибка] (http: // bugs.python.org/issue8220) (хотя и WONTFIX), что вы даже можете. –

8

Если вы не чувствуете, как импортировать что-либо, вы можете попробовать:

raise SystemExit, 0 
+0

Можно ли это поймать, если кто-то хочет продлить основной и не выйти в конце? – ThorSummoner

Смежные вопросы