从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
来检查此行为。