2010-09-28 10 views
25

Doublons possibles:
Terminating a Python script
Terminating a Python ProgramPython comment quitter la fonction principale

Ma question est de savoir comment sortir dans la fonction principale Python? J'ai essayé 'return' mais il a donné l'erreur SyntaxError: 'return' outside function. Quelqu'un peut-il aider? Merci.

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

Après avoir recherché qu'avez-vous trouvé? http://stackoverflow.com/search?q=%5Bpython%5D+exit. Tout cela semble avoir quelque chose en commun. –

+2

Je pense que les gens ont manqué le point de cette question. Le PO ne cherche pas une façon générique de terminer un programme. Il veut savoir pourquoi, dans ce cas, le «retour» ne fonctionne pas dans ce but. – nobar

+0

Cette réponse à une question connexe semble la plus utile ici http://stackoverflow.com/a/953385/86967. – nobar

Répondre

55

Vous pouvez utiliser sys.exit() pour quitter le milieu de la fonction principale.

Cependant, je recommande de ne pas faire de logique là-bas. Au lieu de cela, mettez tout dans une fonction, et appelez cela de __main__ - alors vous pouvez utiliser le retour comme d'habitude.

+6

+1 pour ajouter une fonction explicite 'tout'. Cela facilite également (1) l'appel de ce script à partir d'autres scripts (2) test unitaire. –

+5

Guido van Rossum soutient (ou au moins, habitué) cette approche: http://www.artima.com/weblogs/viewpost.jsp?thread=4829 – ide

+0

Je crée généralement une fonction nommée "main" et je la mets au haut du fichier. –

2
Module

utilisation sys

import sys 
sys.exit() 
16

Vous ne pouvez pas retourner parce que vous n'êtes pas dans une fonction. Vous pouvez cependant exit. 0 (0 par défaut) signifie succès, non nul signifie un échec.

+1

Pourquoi 'sys.exit()' au lieu de simplement 'exit()'? –

+1

Pourquoi pas? En outre, Python essaie de ne pas fournir plus de fonctions intégrées que nécessaire. –

+2

@Just, les [docs] (http://docs.python.org/library/constants.html#exit) disent de ne pas utiliser 'exit' dans les programmes, et c'est sans doute un [bug] (http: // bugs.python.org/issue8220) (bien que WONTFIX) que vous pouvez même. –

8

Si vous ne vous sentez pas comme quelque chose d'importation, vous pouvez essayer:

raise SystemExit, 0 
+0

Est-ce que cela peut être attrapé si quelqu'un voulait étendre le principal et ne pas sortir à la fin de celui-ci? – ThorSummoner

Questions connexes