要退出Python命令行,我必须输入exit()。如果我键入exit,它说从python命令行退出
Use exit() or Ctrl-Z plus Return to exit
通常当你键入exit
,你想退出程序。为什么解释者知道我正试图退出命令行时会给我上述错误?为什么它不会退出?我知道这并不重要,它是一个愚蠢的问题,但我很好奇。
要退出Python命令行,我必须输入exit()。如果我键入exit,它说从python命令行退出
Use exit() or Ctrl-Z plus Return to exit
通常当你键入exit
,你想退出程序。为什么解释者知道我正试图退出命令行时会给我上述错误?为什么它不会退出?我知道这并不重要,它是一个愚蠢的问题,但我很好奇。
当您在命令行中键入exit
时,它会找到具有该名称的变量并在其上调用__repr__
(或__str__
)。通常情况下,你会得到这样的结果:
<function exit at 0x00B97FB0>
但他们决定重新定义函数的exit
对象来显示一个有用的讯息。不管这是不是一个愚蠢的行为,是一个主观的问题,但它不“只是退出”的一个可能的原因是:
假设你在调试器中查找一些代码,例如其中一个对象引用了exit
函数。当调试器试图在该对象上调用__repr__
以向您显示该功能时,程序突然停止!这实际上是意想不到的,并且采取措施可能会进一步使事情复杂化(例如,即使将此行为限制在命令行中,如果您尝试打印某些具有exit
作为属性的对象又会怎样?)
在这种情况下,真正的退出函数甚至不在范围内,除非您导入sys,之后您可以调用sys.exit()来退出解释器。 – 2012-03-16 03:18:51
我建议你用Ctrl-D退出Python解释器。这是用于文件结束或传输结束的旧ASCII代码。
唯一适用于我的方法... – 2015-11-20 13:18:20
如果脚本遇到错误,看起来像这种方法不起作用。 – blaylockbk 2016-12-06 20:55:04
在我的python解释器exit
实际上是一个字符串而不是函数 - 'Use Ctrl-D (i.e. EOF) to exit.'
。你可以通过输入type(exit)
来检查你的翻译。在活动python中,发生的是退出是一个函数。如果您不调用该函数,则会打印该对象的字符串表示形式。这是返回的任何对象的默认行为。只是设计人员认为人们可能会尝试输入exit来退出解释器,因此他们将退出函数的字符串表示形成了一个有用的消息。您可以通过输入str(exit)
甚至print exit
来检查此行为。
此消息是的exit
看看这些实施例的__str__
属性:
>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'
>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'
因为解释器不是你提供命令的shell,所以它就是一个解释器。你给它的东西是Python代码。
Python的语法是这样的,exit
本身不可能是对象名称以外的任何东西。简单地引用一个对象实际上不能做任何事情(除了read-eval-print循环通常所做的事情,即显示对象的字符串表示形式)。
这对我来说是最好的方式来出来的python提示。
退出()
它可能有怎样的功能往往与所谓的做'()'末...否则,它可能(可能)是一个变量...或某种对象... – summea 2012-03-16 00:59:23
正确,但解释者知道我正在尝试退出,这就是为什么打印该消息。否则会打印出错误信息。如果它知道我想退出,它可以退出。 – Ank 2012-03-16 01:00:56