545 votes

La différence entre la sortie() et sys.exit() en python?

Je viens de remarquer il y a 2 nom-fonctions susceptibles exit() et sys.exit() en Python. Quelle est la différence et quelle est la meilleure situation pour utiliser l'un plutôt que l'autre?

603voto

miku Points 63392

exit est une aide pour le shell interactif - sys.exit est destiné à l'utilisation dans les programmes.

Le module du site (qui est importé automatiquement au démarrage, sauf si l'option-S option de ligne de commande est donné) ajoute plusieurs constantes intégrées dans l'espace de noms (par exemple, exit). Ils sont utiles pour l'interactif interpréteur shell et ne doivent pas être utilisées dans les programmes.


Techniquement, ils ne sont pour la plupart les mêmes: sensibilisation SystemExit. sys.exit le fait dans sysmodule.c:

static PyObject *
sys_exit(PyObject *self, PyObject *args)
{
    PyObject *exit_code = 0;
    if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code))
        return NULL;
    /* Raise SystemExit so callers may catch it or clean up. */
    PyErr_SetObject(PyExc_SystemExit, exit_code);
   return NULL;
}

Alors qu' exit est défini dans site.py:

class Quitter(object):
    def __init__(self, name):
        self.name = name
    def __repr__(self):
        return 'Use %s() or %s to exit' % (self.name, eof)
    def __call__(self, code=None):
        # Shells like IDLE catch the SystemExit, but listen when their
        # stdin wrapper is closed.
        try:
            sys.stdin.close()
        except:
            pass
        raise SystemExit(code)
__builtin__.quit = Quitter('quit')
__builtin__.exit = Quitter('exit')

Notez qu'il existe une troisième option de sortie, à savoir les os._exit, qui sort sans faire appel à des pointeurs de nettoyage, de rinçage stdio tampons, etc. (et qui devrait normalement être utilisés dans le processus de l'enfant après un fork()).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X