问题:从python命令行退出
要从Python命令行退出,我必须键入exit()。如果我输入exit,它会说
Use exit() or Ctrl-Z plus Return to exit
通常,当您键入时exit
,您想退出该程序。当解释程序知道我要退出命令行时,为什么会给我上述错误?为什么不退出呢?我知道这并不重要,这是一个愚蠢的问题,但我很好奇。
回答 0
在我的python解释器exit
中,实际上是一个字符串而不是一个函数- 'Use Ctrl-D (i.e. EOF) to exit.'
。您可以输入以下内容来检查口译员type(exit)
在活动的python中,正在发生的事情是exit是一个函数。如果不调用该函数,它将打印出对象的字符串表示形式。这是返回的任何对象的默认行为。只是设计人员认为人们可能会尝试键入exit退出解释器,因此他们使exit函数的字符串表示形式很有帮助。您可以通过键入str(exit)
甚至来检查此行为print exit
。
回答 1
这对我有效,这是从python提示符中提取出来的最好方法。
出口()
回答 2
exit
在命令行中键入时,它将查找具有该名称的变量并在其上调用__repr__
(或__str__
)。通常,您会得到如下结果:
<function exit at 0x00B97FB0>
但是他们决定为该exit
对象重新定义该功能,以显示一条有用的消息。这是否是一个愚蠢的行为,是一个主观的问题,但它不“只是退出”的一个可能原因是:
例如,假设您正在调试器中查看一些代码,并且其中一个对象引用了该exit
函数。当调试器尝试调用__repr__
该对象以向您显示该功能时,该程序突然停止!这真的是出乎意料的,并且采取应对措施可能会使事情进一步复杂化(例如,即使将行为限制为命令行,如果尝试打印具有exit
属性的对象该怎么办?)
回答 3
这个消息是__str__
的属性exit
看这些例子:
1个
>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit
2
>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'
3
>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'
回答 4
我建议您使用退出Python解释器Ctrl-D。这是文件结束或传输结束的旧ASCII码。
回答 5
在Windows上与Anaconda 4.5+和Python 3.6+一起使用
Ctrl+Z
要么
exit()
在某些情况下,您可能必须使用
Ctrl+Break
如果您的计算机没有Break
钥匙,请参见此处。
回答 6
因为解释器不是您提供命令的外壳,所以它是-解释器。您提供的是Python代码。
Python的语法exit
本身不可能是对象的名称。简单地引用一个对象实际上并不能做任何事情(read-eval-print循环通常会执行的操作除外;即显示该对象的字符串表示形式)。
回答 7
您可以解决该问题。
PYTHONSTARTUP
使用以下链接到python文件
# Make exit work as expected
type(exit).__repr__ = type(exit).__call__
这是如何运作的?
python命令行是一个read-evaluate-print-loop,也就是说,当您键入文本时,它将读取该文本,对其进行评估并最终打印结果。
键入时,exit()
它将求值为类型的可调用对象,site.Quitter
并调用其__call__
退出系统的函数。键入时,exit
它求值到相同的可调用对象,而不调用它,则将打印该对象,从而依次调用__repr__
该对象。
我们可以通过链接__repr__
来利用这一点__call__
,从而获得预期的退出系统的行为,即使我们键入时exit
不带括号也是如此。
回答 8
要退出Python终端,只需执行以下操作:
exit()
请注意,这是一个函数,大多数用户在不调用它的情况下将其与退出混合使用,但是新的Pyhton终端会显示一条消息…
或作为快捷方式,按:
Ctrl + D
在键盘上…
回答 9
如果您陷在python命令行中,但以上解决方案均不适合您,请尝试 exit(2)
回答 10
“ exit”是可以在Python程序中使用的有效变量名。当您尝试查看该变量的值时,您不想退出解释器。