退出python命令行

Ank*_*Ank 130 python

要退出Python命令行,我必须输入exit().如果我输入退出,它说

Use exit() or Ctrl-Z plus Return to exit
Run Code Online (Sandbox Code Playgroud)

通常在您键入时exit,您可能希望退出程序.为什么解释器在知道我试图退出命令行时给出了上述错误?为什么不退出呢?我知道这无关紧要,这是一个愚蠢的问题,但我很好奇.

Sre*_* GS 49

这对我有用,是python提示出来的最好方法.

出口()

  • 我对这个答案感到困惑......问题本身表明他们已经知道 `exit()` 有效,并且他们想知道为什么没有括号的 `exit` 不起作用。所以这个答案只是重复了问题的一部分,并没有真正回答问题。 (6认同)

mgi*_*nbr 37

当您exit在命令行中键入时,它会找到具有该名称的变量并在其上调用__repr__(或__str__).通常,你会得到如下结果:

<function exit at 0x00B97FB0>
Run Code Online (Sandbox Code Playgroud)

但他们决定重新定义该exit对象的功能,以显示有用的消息.这是否是一个愚蠢的行为,是一个主观的问题,但它不"退出"的一个可能原因是:

例如,假设您在调试器中查看某些代码,其中一个对象引用该exit函数.当调试器试图调用__repr__该对象以向您显示该功能时,程序突然停止!这实际上是意料之外的,反击的措施可能会使事情进一步复杂化(例如,即使你将这种行为限制在命令行,如果你试图打印一些具有exit属性的对象怎么办?)

  • 在这种情况下,真正的退出函数甚至不在范围内,除非你`import sys`,之后你会调用sys.exit()来退出解释器. (4认同)

Dun*_*nes 28

在我的python中,解释exit器实际上是一个字符串而不是函数 - 'Use Ctrl-D (i.e. EOF) to exit.'.您可以输入以检查您的口译员type(exit)

在活动python中发生的事情是exit是一个函数.如果不调用该函数,它将打印出该对象的字符串表示形式.这是返回的任何对象的默认行为.只是设计师认为人们可能会尝试键入exit来退出解释器,因此他们使退出函数的字符串表示成为有用的信息.您可以通过键入str(exit)甚至来检查此行为print exit.

  • Ctrl-Z是您在Windows(以及DOS)上执行的操作,您可以在类Unix系统上执行Ctrl-D操作. (8认同)

Jay*_*sky 19

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

  • Ctrl-Break在Windows中可以一致地工作。Ctrl-D或Ctrl-Z在Windows中适用于Python 2.7、3.4、3.6。但是在Python 3.7中,这些命令停止了工作,退出的最短ASCII序列是`Ctrl-Z` Enter。 (2认同)

mou*_*oul 19

此消息是__str__属性exit

看看这些例子:

1

>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit
Run Code Online (Sandbox Code Playgroud)

2

>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'
Run Code Online (Sandbox Code Playgroud)

3

>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'
Run Code Online (Sandbox Code Playgroud)


Shi*_*hah 9

在Windows上与Anaconda 4.5+和Python 3.6+一起使用

Ctrl+Z
Run Code Online (Sandbox Code Playgroud)

要么

exit()
Run Code Online (Sandbox Code Playgroud)

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

Ctrl+Break
Run Code Online (Sandbox Code Playgroud)

如果您的计算机没有Break密钥,请参见此处


Kar*_*tel 7

因为解释器不是你提供命令的shell,所以 - 很好 - 一个解释器.你给它的东西是Python代码.

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


aku*_*uhn 7

你可以解决这个问题。

PYTHONSTARTUP使用以下内容链接到 python 文件

# Make exit work as expected
type(exit).__repr__ = type(exit).__call__
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?

python 命令行是一个读取-评估-打印-循环,即当您输入文本时,它将读取该文本,对其进行评估,并最终打印结果。

当您键入时,exit()它会评估为类型的可调用对象site.Quitter并调用其__call__退出系统的函数。当您键入exit它时,它会评估为相同的可调用对象,而不调用它,该对象将被打印出来,而该对象又会调用__repr__该对象。

我们可以通过链接__repr____call__并因此获得退出系统的预期行为来利用这一点,即使我们在exit没有括号的情况下键入。

  • 他们努力让 `exit` 打印出“有用的”字符串,但他们不能仅仅绑定它来做自然的事情并退出解释器。每次都被迫输入括号令人沮丧。这个答案是完美的,应该被接受。 (4认同)

Ali*_*eza 5

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

exit()
Run Code Online (Sandbox Code Playgroud)

请注意这是一个调用的函数,因为大多数用户将它与退出混合而不调用,但是新的 Pyhton 终端显示一条消息...

或作为快捷方式,请按:

Ctrl + D
Run Code Online (Sandbox Code Playgroud)

在你的键盘上...

Ctrl + D

  • 你所说的一切都已经在上面的答案中涵盖了。 (3认同)