我目前在 Jupyter Notebook 中使用 Python3,我刚刚遇到了一个关键字exit
。这个关键字有什么作用?
with open("some_file.txt") as f:
for lines in f:
print(lines)
exit
The exit
循环中的行不执行任何操作。他们为什么不采取任何行动比通常的原因要复杂一些exit
但在 Python 中什么也不做。
通常情况下,exit
单独一行不会退出 Python。最多,在交互模式下,它会打印一条消息,告诉你如何退出Python(消息在_sitebuiltins.Quitter.__repr__):
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
IPython 做了一些不同的事情。 IPython 为方便交互而提供了许多额外的系统,其中一个系统是autocall某种类型的实例,IPython.core.autocall.IPyAutocall
。 (这与%autocall magic.)
在 IPython 中,exit
and quit
被设置为实例IPython.core.autocall.ExitAutocall,一个子类IPyAutocall
。 IPython 识别这种类型的对象,因此当一行只包含exit
or quit
执行后,IPython实际上就退出了。
In [1]: exit
[IPython dies here]
Jupyter Notebook 的 IPython 内核具有exit
and quit
设置为非常密切相关的实例IPython.core.autocall.ZMQExitAutocall,它有一些额外的功能来支持keep_kernel
论,但在其他方面是相同的。
不过,只有当引用可自动调用对象的行是单元格的全部内容时,才会触发此功能。在循环内,自动调用功能不会触发,因此我们回到什么也没有发生的状态。
事实上,甚至比正常交互模式下发生的情况还要少 - 在正常的非 IPython 交互会话中,由于 IPython 方式的差异,此循环将在每次迭代时打印“Use exit()...”消息常规交互模式处理表达式自动打印。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)