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