小智 5
简短回答:不,IPython 没有此功能。
然而,根据我对 bpython 文档的理解,他们的倒带实际上并没有倒退,而是重新开始并重播到会话早期的某个点。如果确实如此,那么在 IPython 中,您可以通过重置和重新运行历史记录来做一些可能类似的事情:
def 倒带(ip, s=''):
"""尝试将 IPython 重置为较早的状态
通过重置 IPython 并重放
历史记录到(但不包括)指定的索引。
"""
如果:
stop = min(int(s), ip.execution_count)
别的:
# 默认备份 1
停止 = ip.execution_count-1
# 获取历史
hist = list(ip.history_manager.get_range(stop=stop))
# 重置 IPython
ip.reset()
ip.execution_count=0
# 回放历史
对于 _,i,cell in hist:
ip.run_cell(单元格,store_history=True)
# 将此函数公开为 %rewind
get_ipython().define_magic('rewind', rewind)
然后在稍后调用%rewind 6,您应该让 IPython 回到输入 #6 之前的状态。这个实现远非完美,因为我只是把它扔在一起(例如,它不会抑制重播单元的回溯或输出),但它应该是一个开始。
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |