Para salir de la línea de comando de Python, tengo que escribir exit (). Si escribo exit, dice
Use exit() or Ctrl-Z plus Return to exit
Por lo general, cuando escribe exit
, desea salir del programa. ¿Por qué el intérprete me da el error anterior cuando sabe que estoy tratando de salir de la línea de comando? ¿Por qué no acaba de salir? Sé que no importa y es una pregunta tonta, pero tengo curiosidad.
()
al final ... de lo contrario, podría (posiblemente) ser una variable ... o algún tipo de objeto ...Respuestas:
En mi intérprete de Python
exit
es en realidad una cadena y no una función -'Use Ctrl-D (i.e. EOF) to exit.'
. Puede consultar a su intérprete ingresandotype(exit)
En Python activo, lo que sucede es que la salida es una función. Si no llama a la función, imprimirá la representación de cadena del objeto. Este es el comportamiento predeterminado para cualquier objeto devuelto. Es solo que los diseñadores pensaron que las personas podrían tratar de escribir exit para salir del intérprete, por lo que hicieron que la representación de cadena de la función de salida sea un mensaje útil. Puede verificar este comportamiento escribiendo
str(exit)
o inclusoprint exit
.fuente
Esto funciona para mí, la mejor manera de salir de Python prompt.
fuente
exit()
funciona, y quieren saber por quéexit
sin parens no funciona. Entonces, esta respuesta solo repite parte de la pregunta y en realidad no la responde.Cuando escribe
exit
en la línea de comando, encuentra la variable con ese nombre y llama__repr__
(o__str__
) en ella. Por lo general, obtendría un resultado como:Pero decidieron redefinir esa función para que el
exit
objeto muestre un mensaje útil. Si ese es un comportamiento estúpido o no, es una pregunta subjetiva, pero una posible razón por la que no "simplemente sale" es:Supongamos que está viendo algún código en un depurador, por ejemplo, y uno de los objetos hace referencia a la
exit
función. Cuando el depurador intenta invocar__repr__
ese objeto para mostrarle esa función, ¡el programa se detiene de repente! Eso sería realmente inesperado, y las medidas para contrarrestar eso podrían complicar aún más las cosas (por ejemplo, incluso si limita ese comportamiento a la línea de comando, ¿qué pasa si intenta imprimir algún objeto que tieneexit
como atributo?)fuente
import sys
, después de lo cual llamaría a sys.exit () para salir del intérprete.Este mensaje es el
__str__
atributo deexit
mira estos ejemplos:
1
2
3
fuente
Te recomiendo que salgas del intérprete de Python con Ctrl-D. Este es el antiguo código ASCII para fin de archivo o fin de transmisión.
fuente
Ctrl-Break
Funciona constantemente en Windows.Ctrl-D
oCtrl-Z
trabajó en Windows para Python 2.7, 3.4, 3.6. Pero en Python 3.7 estos dejaron de funcionar, y la secuencia ASCII más corta que sale esCtrl-Z
Enter
.Con Anaconda 4.5+ y Python 3.6+ en el uso de Windows
o
En algunos casos, es posible que deba usar
Si su computadora no tiene
Break
clave, vea aquí .fuente
Debido a que el intérprete no es un shell donde proporciona comandos, es, bueno, un intérprete. Las cosas que le das son código Python.
La sintaxis de Python es tal que
exit
, por sí sola, no puede ser otra cosa que un nombre para un objeto. Simplemente referirse a un objeto en realidad no puede hacer nada (excepto lo que normalmente hace el ciclo read-eval-print; es decir, mostrar una representación de cadena del objeto).fuente
Puedes arreglar eso.
Enlace
PYTHONSTARTUP
a un archivo de Python con lo siguiente¿Como funciona esto?
La línea de comando de Python es un ciclo de lectura-evaluación-impresión, es decir, cuando escribe texto, leerá ese texto, lo evaluará y finalmente imprimirá el resultado.
Cuando escribe,
exit()
se evalúa como un objeto de tipo invocablesite.Quitter
y llama a su__call__
función que sale del sistema. Cuando escribe,exit
se evalúa como el mismo objeto invocable, sin llamarlo, se imprime el objeto, que a su vez llama__repr__
al objeto.Podemos tomar ventaja de esta mediante la vinculación
__repr__
a__call__
y así conseguir el comportamiento esperado de la salida del sistema, incluso cuando escribimosexit
sin paréntesis.fuente
exit
imprimir la cadena "útil", pero no pudieron vincularla para hacer lo natural y salir del intérprete. Ser forzado a escribir los paréntesis cada vez es frustrante. Esta respuesta es perfecta y debería ser la aceptada en su lugar.Para salir de la terminal de Python , simplemente haga:
Por favor, preste atención, es una función que se llama porque la mayoría de los usuarios la mezclan con exit sin llamar, pero la nueva terminal Pyhton muestra un mensaje ...
o como acceso directo, presione:
en tu teclado ...
fuente
Si se atascó en la línea de comando de Python y ninguna de las soluciones anteriores funcionó para usted, intente
exit(2)
fuente
"exit" es un nombre de variable válido que puede usarse en su programa Python. No querrá salir del intérprete cuando solo está tratando de ver el valor de esa variable.
fuente
exit
, anulará este símbolo yexit()
ya no funcionará. Aunque este símbolo es un nombre de variable válido, usarlo de esa manera no parece ser una muy buena práctica.