Um die Python-Befehlszeile zu verlassen, muss ich exit () eingeben. Wenn ich exit tippe, heißt es
Use exit() or Ctrl-Z plus Return to exit
Normalerweise exit
möchten Sie beim Tippen das Programm beenden. Warum gibt mir der Interpreter den obigen Fehler, wenn er weiß, dass ich versuche, die Befehlszeile zu verlassen? Warum wird es nicht einfach beendet? Ich weiß, dass es keine Rolle spielt und es ist eine dumme Frage, aber ich bin neugierig.
()
am Ende aufgerufen werden ... andernfalls könnte es (möglicherweise) eine Variable sein ... oder eine Art Objekt ...Antworten:
In meinem Python-Interpreter
exit
ist eigentlich eine Zeichenfolge und keine Funktion -'Use Ctrl-D (i.e. EOF) to exit.'
. Sie können Ihren Dolmetscher durch Eingabe überprüfentype(exit)
In Active Python passiert, dass exit eine Funktion ist. Wenn Sie die Funktion nicht aufrufen, wird die Zeichenfolgendarstellung des Objekts ausgedruckt. Dies ist das Standardverhalten für jedes zurückgegebene Objekt. Es ist nur so, dass die Designer dachten, die Leute könnten versuchen, exit einzugeben, um den Interpreter zu beenden, und so machten sie die Zeichenfolgendarstellung der Exit-Funktion zu einer hilfreichen Nachricht. Sie können dieses Verhalten überprüfen, indem Sie
str(exit)
oder sogar eingebenprint exit
.quelle
Dies funktioniert für mich, der beste Weg, um aus der Python-Eingabeaufforderung herauszukommen.
quelle
exit()
funktioniert, und sie möchten wissen, warumexit
ohne Parens nicht funktioniert. Diese Antwort wiederholt also nur einen Teil der Frage und beantwortet sie nicht wirklich.Wenn Sie
exit
in die Befehlszeile eingeben, wird die Variable mit diesem Namen gefunden und aufgerufen__repr__
(oder__str__
). Normalerweise erhalten Sie ein Ergebnis wie:Sie haben jedoch beschlossen, diese Funktion neu zu definieren, damit das
exit
Objekt stattdessen eine hilfreiche Nachricht anzeigt. Ob das ein dummes Verhalten ist oder nicht, ist eine subjektive Frage, aber ein möglicher Grund, warum es nicht "einfach beendet" wird, ist:Angenommen, Sie betrachten beispielsweise Code in einem Debugger und eines der Objekte verweist auf die
exit
Funktion. Wenn der Debugger versucht,__repr__
dieses Objekt aufzurufen , um Ihnen diese Funktion anzuzeigen, wird das Programm plötzlich gestoppt! Das wäre wirklich unerwartet und die Maßnahmen, um dem entgegenzuwirken, könnten die Dinge noch komplizierter machen (zum Beispiel, selbst wenn Sie dieses Verhalten auf die Befehlszeile beschränken, was ist, wenn Sie versuchen, ein Objekt zu drucken, dasexit
ein Attribut hat?)quelle
import sys
dann verfügbar, wenn Sie sys.exit () aufrufen, um den Interpreter zu beenden.Diese Nachricht ist das
__str__
Attribut vonexit
schau 'dir diese Beispiele an :
1
2
3
quelle
Ich empfehle Ihnen, den Python-Interpreter mit zu beenden Ctrl-D. Dies ist der alte ASCII-Code für das Ende der Datei oder das Ende der Übertragung.
quelle
Ctrl-Break
funktioniert konsistent in Windows.Ctrl-D
oderCtrl-Z
arbeitete in Windows für Python 2.7, 3.4, 3.6. In Python 3.7 funktionierten diese jedoch nicht mehr und die kürzeste ASCII-Sequenz, die beendet wird, istCtrl-Z
Enter
.Mit Anaconda 4.5+ und Python 3.6+ unter Windows verwenden
oder
In einigen Fällen müssen Sie möglicherweise verwenden
Wenn Ihr Computer keinen
Break
Schlüssel hat, sehen Sie hier .quelle
Da der Interpreter keine Shell ist, in der Sie Befehle bereitstellen, handelt es sich um einen Interpreter. Die Dinge, die Sie ihm geben, sind Python-Code.
Die Syntax von Python ist so, dass
exit
an sich unmöglich etwas anderes als ein Name für ein Objekt sein kann. Das einfache Verweisen auf ein Objekt kann eigentlich nichts bewirken (außer dem, was die Lese-Auswertungs-Druckschleife normalerweise tut, dh eine Zeichenfolgendarstellung des Objekts anzeigen).quelle
Sie können das beheben.
Verknüpfen Sie
PYTHONSTARTUP
eine Python-Datei mit den folgenden AngabenWie funktioniert das?
Die Python-Befehlszeile ist eine Lese-Auswertungs-Druckschleife. Wenn Sie also Text eingeben, wird dieser Text gelesen, ausgewertet und schließlich das Ergebnis gedruckt.
Wenn Sie eingeben, wird
exit()
es zu einem aufrufbaren Objekt vom Typ ausgewertetsite.Quitter
und ruft seine__call__
Funktion auf, die das System verlässt. Wenn Sieexit
eingeben, wird das gleiche aufrufbare Objekt ausgewertet, ohne es aufzurufen, wird das Objekt gedruckt, das wiederum__repr__
das Objekt aufruft .Wir können dies nutzen , durch die Verknüpfung
__repr__
zu__call__
und erhalten somit das erwartete Verhalten Verlassen des Systems , auch wenn wir gebenexit
ohne Klammern.quelle
exit
den "hilfreichen" String zu drucken, aber sie konnten ihn nicht einfach binden, um das Natürliche zu tun und den Interpreter zu verlassen. Es ist frustrierend, jedes Mal gezwungen zu sein, die Klammern einzugeben. Diese Antwort ist perfekt und sollte stattdessen akzeptiert werden.Um das Python-Terminal zu verlassen , gehen Sie einfach wie folgt vor:
Bitte beachten Sie, dass es sich um eine Funktion handelt, die aufgerufen wird, da die meisten Benutzer sie mit exit mischen, ohne aufzurufen, aber das neue Pyhton-Terminal eine Meldung anzeigt ...
oder drücken Sie als Verknüpfung:
auf Ihrer Tastatur ...
quelle
Wenn Sie in der Python-Befehlszeile stecken geblieben sind und keine der oben genannten Lösungen für Sie funktioniert hat, versuchen Sie es
exit(2)
quelle
"exit" ist ein gültiger Variablenname, der in Ihrem Python-Programm verwendet werden kann. Sie möchten den Interpreter nicht verlassen, wenn Sie nur versuchen, den Wert dieser Variablen anzuzeigen.
quelle
exit
, überschreiben Sie dieses Symbol undexit()
funktionieren nicht mehr. Obwohl dieses Symbol ein gültiger Variablenname ist, scheint die Verwendung auf diese Weise keine sehr gute Vorgehensweise zu sein.