从python命令行退出

要从Python命令行退出,我必须inputexit()。 如果我input退出,它说

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

通常当你inputexit ,你会想退出程序。 为什么解释者知道我正在尝试退出命令行时会给我上述错误? 为什么不直接退出? 我知道这并不重要,它是一个愚蠢的问题,但我很好奇。

当你在命令行inputexit时,它会find这个名字的variables,并且在其上调用__repr__ (或__str__ )。 通常,你会得到如下结果:

 <function exit at 0x00B97FB0> 

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

假设你正在debugging器中查看一些代码,并且其中一个对象引用了exit函数。 当debugging器试图调用该对象上的__repr__来向你显示该函数时,程序突然停止! 这真的是意想不到的,对付这些措施可能会使问题变得更加复杂(例如,即使将此行为限制在命令行中,如果您尝试打印某些具有exit属性的对象,该怎么办?)

这对我来说是最好的方式来出来python提示符。

出口()

这个消息是exit__str__属性

看看这些例子:

1

 >>> print exit Use exit() or Ctrl-D (ie EOF) to exit 

2

 >>> exit.__str__() 'Use exit() or Ctrl-D (ie EOF) to exit' 

3

 >>> getattr(exit, '__str__')() 'Use exit() or Ctrl-D (ie EOF) to exit' 

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

因为口译员不是你提供命令的shell,而是口译员。 你给它的东西是Python代码。

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

在我的Python解释器exit实际上是一个string,而不是一个函数 – 'Use Ctrl-D (ie EOF) to exit.' 。 您可以通过inputtype(exit)来检查您的口译员,

在活跃的python中,发生的是退出是一个函数。 如果您不调用该函数,则会打印出对象的string表示forms。 这是返回的任何对象的默认行为。 只是devise者认为人们可能会尝试inputexit来退出解释器,所以他们将退出函数的string表示forms作为一个有用的信息。 您可以通过键入str(exit)或甚至print exit来检查此行为。