要退出Python命令行,我必须输入exit().如果我输入退出,它说
Use exit() or Ctrl-Z plus Return to exit
Run Code Online (Sandbox Code Playgroud)
通常在您键入时exit,您可能希望退出程序.为什么解释器在知道我试图退出命令行时给出了上述错误?为什么不退出呢?我知道这无关紧要,这是一个愚蠢的问题,但我很好奇.
Sre*_* GS 49
这对我有用,是python提示出来的最好方法.
出口()
mgi*_*nbr 37
当您exit在命令行中键入时,它会找到具有该名称的变量并在其上调用__repr__(或__str__).通常,你会得到如下结果:
<function exit at 0x00B97FB0>
Run Code Online (Sandbox Code Playgroud)
但他们决定重新定义该exit对象的功能,以显示有用的消息.这是否是一个愚蠢的行为,是一个主观的问题,但它不"退出"的一个可能原因是:
例如,假设您在调试器中查看某些代码,其中一个对象引用该exit函数.当调试器试图调用__repr__该对象以向您显示该功能时,程序突然停止!这实际上是意料之外的,反击的措施可能会使事情进一步复杂化(例如,即使你将这种行为限制在命令行,如果你试图打印一些具有exit属性的对象怎么办?)
Dun*_*nes 28
在我的python中,解释exit器实际上是一个字符串而不是函数 - 'Use Ctrl-D (i.e. EOF) to exit.'.您可以输入以检查您的口译员type(exit)
在活动python中发生的事情是exit是一个函数.如果不调用该函数,它将打印出该对象的字符串表示形式.这是返回的任何对象的默认行为.只是设计师认为人们可能会尝试键入exit来退出解释器,因此他们使退出函数的字符串表示成为有用的信息.您可以通过键入str(exit)甚至来检查此行为print exit.
Jay*_*sky 19
我建议您使用Ctrl-D退出Python解释器.这是用于文件结束或传输结束的旧ASCII代码.
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)
在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密钥,请参见此处。
因为解释器不是你提供命令的shell,所以 - 很好 - 一个解释器.你给它的东西是Python代码.
Python的语法exit本身不可能是除了对象名称之外的任何东西.简单地引用一个对象实际上不能做任何事情(除了read-eval-print循环通常做的事情;即显示对象的字符串表示).
你可以解决这个问题。
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没有括号的情况下键入。
要退出Python 终端,只需执行以下操作:
exit()
Run Code Online (Sandbox Code Playgroud)
请注意这是一个调用的函数,因为大多数用户将它与退出混合而不调用,但是新的 Pyhton 终端显示一条消息...
或作为快捷方式,请按:
Ctrl + D
Run Code Online (Sandbox Code Playgroud)
在你的键盘上...