2010-09-28 13 views
25

duplicados posibles:
Terminating a Python script
Terminating a Python ProgramPython cómo salir de la función principal

Mi pregunta es cómo salir a cabo en función principal de Python? He intentado con 'return', pero me dio el error SyntaxError: 'return' outside function. ¿Alguien puede ayudar? Gracias.

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

cuando se buscó lo encontró? http://stackoverflow.com/search?q=%5Bpython%5D+exit. Todos estos parecen tener algo en común. –

+2

Creo que las personas se han perdido el objetivo de esta pregunta. El OP no está buscando una forma genérica para finalizar un programa. Él quiere saber por qué, en este caso, 'return' no funciona para ese propósito. – nobar

+0

Esta respuesta a una pregunta relacionada parece ser la más útil aquí http://stackoverflow.com/a/953385/86967. – nobar

Respuesta

55

Puede usar sys.exit() para salir del medio de la función principal.

Sin embargo, recomendaría no hacer ninguna lógica allí. En su lugar, ponga todo en una función, y llámelo desde __main__ - entonces puede usar return como de costumbre.

+6

+1 para agregar una función explícita de 'todo'. Esto también hace que sea más fácil (1) llamar a este script desde otros scripts (2) prueba unitaria. –

+5

Guido van Rossum admite (o al menos, solía) este enfoque: http://www.artima.com/weblogs/viewpost.jsp?thread=4829 – ide

+0

Normalmente creo una función llamada "principal" y la coloco en el la parte superior del archivo. –

2

uso sys módulo

import sys 
sys.exit() 
16

No puede regresar porque no tiene una función. Puedes exit sin embargo.

import sys 
sys.exit(0) 

0 (valor predeterminado) significa éxito, no cero significa falta.

+1

¿Por qué 'sys.exit()' en lugar de simplemente 'exit()'? –

+1

¿Por qué no? Además, Python intenta no proporcionar más funciones integradas de las necesarias. –

+2

@Just, [docs] (http://docs.python.org/library/constants.html#exit) dice no usar plain 'exit' en los programas, y podría decirse que es un [error] (http: // bugs.python.org/issue8220) (aunque sea un WONTFIX) que incluso puede. –

8

Si no tiene ganas de importar nada, puede intentar:

raise SystemExit, 0 
+0

¿Se puede capturar esto si alguien quiere extender el main y no salir al final del mismo? – ThorSummoner

Cuestiones relacionadas