Краткий ответ: нет, IPython не имеет этой функции.
Однако, исходя из моего понимания документации bpython, их перемотка на самом деле не отступает, а начинается заново и переигрывается до некоторой точки в начале сеанса. Если это действительно так, то в IPython вы можете сделать что-то похожее, сбросив и повторно запустив историю:
перемотка назад (ip, s = ''): "" "попытка сбросить IPython в более раннее состояние реализовано путем сброса IPython и воспроизведения история до (но не включая) указанного индекса. «»» если с: stop = min (int (s), ip.execution_count) еще: # резервная копия 1 по умолчанию stop = ip.execution_count-1 # получить историю hist = list (ip.history_manager.get_range (stop = stop)) # сбросить IPython ip.reset () ip.execution_count = 0 # воспроизведение истории для _, я, ячейка в истории: ip.run_cell (cell, store_history = True) # выставить эту функцию как% rewind get_ipython (). define_magic («перемотка», перемотка)
Затем, позже, позвоните %rewind 6
, и вы должны вернуть IPython в состояние до ввода # 6. Эта реализация далека от совершенства, потому что я просто бросил ее вместе (например, она не будет подавлять обратные вызовы или вывод для воспроизводимых ячеек), но это должно быть началом.