Pour quitter la ligne de commande Python, je dois taper exit (). Si je tape exit, il dit
Use exit() or Ctrl-Z plus Return to exit
Habituellement, lorsque vous tapez exit
, vous souhaitez quitter le programme. Pourquoi l'interpréteur me donne-t-il l'erreur ci-dessus alors qu'il sait que j'essaye de quitter la ligne de commande? Pourquoi ne sort-il pas simplement? Je sais que cela n'a pas d'importance et que c'est une question idiote, mais je suis curieux.
()
à la fin ... sinon, cela pourrait (éventuellement) être une variable ... ou une sorte d'objet ...Réponses:
Dans mon interpréteur python, il
exit
y a en fait une chaîne et non une fonction -'Use Ctrl-D (i.e. EOF) to exit.'
. Vous pouvez vérifier votre interprète en entranttype(exit)
En python actif, ce qui se passe, c'est que la sortie est une fonction. Si vous n'appelez pas la fonction, il affichera la représentation sous forme de chaîne de l'objet. Il s'agit du comportement par défaut pour tout objet renvoyé. C'est juste que les concepteurs ont pensé que les gens pourraient essayer de taper exit pour quitter l'interpréteur, ils ont donc fait de la représentation sous forme de chaîne de la fonction de sortie un message utile. Vous pouvez vérifier ce comportement en tapant
str(exit)
ou mêmeprint exit
.la source
Cela fonctionne pour moi, le meilleur moyen de sortir de l'invite python.
la source
exit()
fonctionne, et ils veulent savoir pourquoiexit
sans parent ne fonctionne pas. Donc, cette réponse ne fait que répéter une partie de la question et n'y répond pas réellement.Lorsque vous tapez
exit
dans la ligne de commande, il trouve la variable avec ce nom et appelle__repr__
(ou__str__
) dessus. Habituellement, vous obtiendrez un résultat comme:Mais ils ont décidé de redéfinir cette fonction pour que l'
exit
objet affiche un message utile à la place. Que ce soit ou non un comportement stupide ou non, est une question subjective, mais une des raisons possibles pour lesquelles il ne «sort pas» est:Supposons que vous regardez du code dans un débogueur, par exemple, et que l'un des objets fait référence à la
exit
fonction. Lorsque le débogueur essaie d'appeler__repr__
cet objet pour vous afficher cette fonction, le programme s'arrête soudainement! Ce serait vraiment inattendu, et les mesures pour contrer qui pourraient compliquer davantage les choses (par exemple, même si vous limitez ce comportement à la ligne de commande, que se passe-t-il si vous essayez d'imprimer un objet qui aexit
comme attribut?)la source
import sys
, après quoi vous appelleriez sys.exit () pour quitter l'interpréteur.Ce message est l'
__str__
attribut deexit
Regardez ces exemples :
1
2
3
la source
Je vous recommande de quitter l'interpréteur Python avec Ctrl-D. Il s'agit de l'ancien code ASCII de fin de fichier ou de fin de transmission.
la source
Ctrl-Break
fonctionne de manière cohérente sous Windows.Ctrl-D
ouCtrl-Z
travaillé sous Windows pour Python 2.7, 3.4, 3.6. Mais dans Python 3.7, ceux-ci ont cessé de fonctionner, et la séquence ASCII la plus courte qui existe estCtrl-Z
Enter
.Avec Anaconda 4.5+ et Python 3.6+ sur Windows, utilisez
ou
Dans certains cas, vous devrez peut-être utiliser
Si votre ordinateur n'a pas de
Break
clé, voyez ici .la source
Parce que l'interpréteur n'est pas un shell dans lequel vous fournissez des commandes, c'est - enfin - un interpréteur. Les choses que vous lui donnez sont du code Python.
La syntaxe de Python est telle que
exit
, en elle-même, ne peut être autre chose qu'un nom pour un objet. Le simple fait de se référer à un objet ne peut rien faire (sauf ce que fait normalement la boucle read-eval-print, c'est-à-dire afficher une représentation sous forme de chaîne de l'objet).la source
Vous pouvez résoudre ce problème.
Lien
PYTHONSTARTUP
vers un fichier python avec les éléments suivantsComment cela marche-t-il?
La ligne de commande python est une boucle de lecture-évaluation-impression, c'est-à-dire que lorsque vous tapez du texte, elle lira ce texte, l'évaluera et finira par imprimer le résultat.
Lorsque vous tapez,
exit()
il évalue un objet appelable de typesite.Quitter
et appelle sa__call__
fonction qui quitte le système. Lorsque vous tapez,exit
il évalue le même objet appelable, sans l'appeler, l'objet est imprimé qui à son tour appelle__repr__
l'objet.Nous pouvons en profiter en établissant un lien
__repr__
vers__call__
et ainsi obtenir le comportement attendu de la sortie du système même lorsque nous taponsexit
sans parenthèses.la source
exit
imprimer la chaîne "utile", mais ils ne pouvaient pas simplement la lier pour faire la chose naturelle et quitter l'interpréteur. Être obligé de taper les parenthèses à chaque fois est frustrant. Cette réponse est parfaite et devrait être acceptée à la place.Pour quitter le terminal Python , faites simplement:
Veuillez faire attention que c'est une fonction qui a été appelée comme la plupart des utilisateurs la mélangent avec exit sans appeler, mais le nouveau terminal Pyhton affiche un message ...
ou comme raccourci, appuyez sur:
sur votre clavier ...
la source
Si vous êtes coincé dans la ligne de commande python et qu'aucune des solutions ci-dessus ne fonctionne pour vous, essayez
exit(2)
la source
"exit" est un nom de variable valide qui peut être utilisé dans votre programme Python. Vous ne voudriez pas quitter l'interpréteur lorsque vous essayez simplement de voir la valeur de cette variable.
la source
exit
, vous remplacez ce symbole etexit()
ne fonctionnera plus. Bien que ce symbole soit un nom de variable valide, l'utiliser de cette manière ne semble pas être une très bonne pratique.