首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >quit()在Python-3.x和IPython中的工作方式不同

quit()在Python-3.x和IPython中的工作方式不同
EN

Stack Overflow用户
提问于 2016-12-07 01:07:04
回答 1查看 806关注 0票数 4

内置函数quit()在Python-3.x和IPython 3中的行为不同。如果在IPython中执行,下面的代码会打印Hello,但不会在IPython中打印任何内容:

代码语言:javascript
复制
quit()
print("Hello")

quit()在IPython中的用途是什么?改变其行为的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-07 01:15:30

看起来,IPythonquit/exit“函数”简化为设置一个标志,表示“下次检查时应该退出”。它不会引发SystemExit本身,因此它可能依赖于间歇检查,即如果同时对两个命令进行排队,则在第二个命令完成之前不会执行。

您可以在IPython提示符下亲自检查它,首先运行quit??,以确保它是一个可调用的类,其__call__委托给self._ip.ask_exit()。接下来,运行quit._ip.ask_exit??,您将看到ask_exit只设置一个标志self.exit_now = True (如果您检查它,它是一个普通属性,而不是一个具有隐藏代码执行的property )。

欢迎您跟踪IPython正在检查的位置;我猜它是在IPython的任何给定行或单元格完成后完成的。

从根本上讲,不同之处在于,quit中的IPython从来没有像普通Python的交互式互联程序中的quit那样相同;quit/exit作为内置的版本将被替换为互动式解释器,而不必完全相同。如果您想要一致的退出行为,请使用import sys和运行sys.exit(),这也是早期退出脚本的正确方法,而不是作为交互式提示符的挂钩。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41007721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档