从python命令行退出

从python命令行退出,python,command-line-interface,Python,Command Line Interface,要退出Python命令行,我必须键入exit()。如果我输入exit,它会显示 Use exit() or Ctrl-Z plus Return to exit 通常,当您键入exit时,您会希望退出程序。当解释器知道我试图退出命令行时,为什么会给我上述错误?为什么不直接退出呢?我知道这不重要,这是一个愚蠢的问题,但我很好奇 我建议您使用Ctrl-D退出Python解释器。这是用于文件结束或传输结束的旧ASCII代码。在我的Python解释器中,退出实际上是一个字符串,而不是一个函数--使用C

要退出Python命令行,我必须键入exit()。如果我输入exit,它会显示

Use exit() or Ctrl-Z plus Return to exit

通常,当您键入
exit
时,您会希望退出程序。当解释器知道我试图退出命令行时,为什么会给我上述错误?为什么不直接退出呢?我知道这不重要,这是一个愚蠢的问题,但我很好奇

我建议您使用Ctrl-D退出Python解释器。这是用于文件结束或传输结束的旧ASCII代码。

在我的Python解释器中,
退出实际上是一个字符串,而不是一个函数--
使用Ctrl-D(即EOF)退出。
。您可以通过输入
type(exit)


在activepython中,exit是一个函数。如果不调用该函数,它将打印出对象的字符串表示形式。这是返回的任何对象的默认行为。只是设计者认为人们可能会尝试键入exit来退出解释器,所以他们将exit函数的字符串表示作为一条有用的消息。您可以通过键入
str(exit)
甚至
print exit

来检查此行为。此消息是
exit
\uuu str\uuu
属性

看看这些例子:

一,

二,

三,


在命令行中键入
exit
时,它会找到具有该名称的变量,并在其上调用
\uuuu repr\uuu
(或
\uu str\uuu
)。通常,您会得到如下结果:

<function exit at 0x00B97FB0>

但是他们决定为
exit
对象重新定义该函数,以显示一条有用的消息。这是否是一种愚蠢的行为,是一个主观问题,但它不“只是退出”的一个可能原因是:


例如,假设您正在调试器中查看一些代码,其中一个对象引用了
exit
函数。当调试器试图调用该对象上的
\uuuu repr\uuu
以向您显示该函数时,程序突然停止!这真是出人意料,应对措施可能会使事情进一步复杂化(例如,即使您将该行为限制在命令行中,但如果您尝试打印某个对象,该对象具有
exit
属性会怎么样?

,因为解释器不是提供命令的shell,这是一个翻译。你给它的东西是Python代码


Python的语法是这样的:
exit
,本身不可能是对象的名称以外的任何东西。简单地引用一个对象实际上不能做任何事情(除了read-eval-print循环通常做的事情,即显示对象的字符串表示)。

这对我来说很有效,是从python提示符出来的最佳方式

退出()

你可以解决这个问题

PYTHONSTARTUP
链接到包含以下内容的python文件

# Make exit work as expected
type(exit).__repr__ = type(exit).__call__

这是怎么回事

python命令行是一个read-evaluate-print循环,即当您键入文本时,它将读取该文本,对其求值,并最终打印结果

键入
exit()
时,它将计算为类型为
site.Quitter
的可调用对象,并调用其退出系统的
\u call\u
函数。当您键入
exit
时,它将计算为相同的可调用对象,而不调用该对象,该对象将被打印出来,而该对象反过来调用对象上的
\uuu repr\uu


我们可以通过将
\uuuuu repr\uuuuu
链接到
\uuuu call\uuuuu
来利用这一点,从而获得退出系统的预期行为,即使在没有括号的情况下键入
exit

请尝试退出(2)

“退出”是可以在Python程序中使用的有效变量名。当您试图查看该变量的值时,您不想退出解释器。

要退出Python终端,只需执行以下操作:

exit()
请注意,这是一个被调用的函数,因为大多数用户在不调用的情况下将其与exit混合使用,但新的Pyhton终端会显示一条消息

或按以下快捷键:

Ctrl + D
在你的键盘上


在Windows上使用Anaconda 4.5+和Python 3.6+

Ctrl+Z

在某些情况下,您可能必须使用

Ctrl+Break

如果您的计算机没有中断键,那么。

这可能与最后使用
()
调用函数的方式有关。。。否则,它可能是一个变量。。。或者某种对象…对,但解释器知道我正试图退出,这就是为什么打印该消息。否则它将打印一条错误消息。如果它知道我正在尝试退出,它可以直接退出。exit或exit()会为我抛出一个错误,我在世界上找到的安装中大约有20%。。。只有CTRL+Z+return能始终工作。我认为
exit
不适用于所有python版本(
CTRL-Z
在windows上,
CTRL-D
在Linux上,
exit()
使用所有python版本CTRL-Z是您在windows上所做的事情(好吧,DOS)在类似Unix的系统上执行Ctrl-D操作的地方。@KarlKnechtel啊,很高兴知道。我在windows上编程的经验很少。在这种情况下,真正的退出函数甚至不在范围内,除非您
导入sys
,然后调用sys.exit()退出解释器。如果脚本出现错误,此方法似乎不起作用。
Ctrl-Break
在Windows中始终有效。
Ctrl-D
Ctrl-Z
在Windows中适用于Python 2.7、3.4、3.6。但在Python 3.7中,这些方法停止工作,存在的最短ASCII序列是
Ctrl-Z
Enter。他们努力使
退出
打印“有用”字符串,但他们不能仅将其绑定以执行自然操作并退出解释器。他们被迫每天键入括号
Ctrl + D
Ctrl+Z
exit()
Ctrl+Break