如何重置 IPython 输入提示编号?(控制台,而不是笔记本或 qt)

Joe*_*ant 5 ipython

以下是我当前的 IPython 命令提示符(常规终端 IPython,而不是笔记本或 Qt):

In [45]: 
Run Code Online (Sandbox Code Playgroud)

我已经完成了我的工作流程,正在着手一项新任务。我想要一种重置 IPython 输入提示编号的方法,如下所示:

In [1]:
Run Code Online (Sandbox Code Playgroud)

我知道这可能来自我无法回答或回答我的案例的非重复问题:如何重置 IPython 输入提示编号?

为进一步清楚起见,我使用的命令示例如下:

In [99]: %reset_command_number
In [1]: 2+2
Out[1]: 4
In [2]: %reset_command_number
In [1]:
Run Code Online (Sandbox Code Playgroud)

3个神奇的问题

  1. 这种魔法(%reset_command_number)存在吗?
  2. 如果 1 的答案是肯定的,那是什么黑魔法?
  3. 如果 1 的答案是否定的,这是否可以从较低级别的 IPython api 实现?(是的,我已经搜索了 api 文档,但我没有找到方法,但是......)

np8*_*np8 2

一种可能是修改InteractiveShellexecution_count的:

import IPython; IPython.get_ipython().execution_count = 0
Run Code Online (Sandbox Code Playgroud)
  • 使用单行命令;可以更轻松地重复调用它(如果您使用向上箭头滚动命令历史记录)
  • 这有一个副作用,即在第一个命令之后您也会看到此错误。不过我不知道它是否有任何副作用。(它已经说历史记录已移至另一个会话)
ERROR! Session/line number was not unique in database. History logging moved to new session 20741
Run Code Online (Sandbox Code Playgroud)

演示

import IPython; IPython.get_ipython().execution_count = 0
Run Code Online (Sandbox Code Playgroud)

使用别名?

也可以使用命令的别名。例如,创建文件i_reset.py并将其放入您的site-packages~/.ipython/extensions/、您的 PYTHONPATH文件夹或您可以在您的文件夹中看到的任何其他文件夹中sys.path

ERROR! Session/line number was not unique in database. History logging moved to new session 20741
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过首先加载它然后调用它来使用该扩展,如下所示:

In [4]: %load_ext i_reset

In [5]: i_reset

In [1]: a
Out[1]: 1
Run Code Online (Sandbox Code Playgroud)