Я использую IPython в оболочке zsh, и у меня возникла проблема с определением функции с несколькими строками.
Например, в исходной оболочке Python я могу определить функцию f следующим образом:
>>> def f(x):
... a = x + 1
... return a
...
>>>
Когда я это сделал в IPython, защита заканчивается сразу же после окончания строки "a = x + 1". Это выглядит так:
In [4]: def f(x):
...: a = x + 1
In [5]:
Как я могу исправить это, изменив какую-то конфигурацию или установив другую версию IPython?
Моя версия Python и IPython:
Python 3.5.6 |Anaconda, Inc.|
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
Это известная ошибка (см. Также это).
Как видно из проблем, на которые я ссылался, это не ошибка с дистрибутивом Anaconda, а то, что попало в версию IPython 7.0.
Маттиас Буссониер предложил использовать Co
(то есть Control o) в качестве меры остановки. Co
открывает новые пустые строки под текущей строкой, которые вы можете достичь и редактировать с помощью клавиш со стрелками - это не очень удовлетворительное решение, но пока нет другого решения (за исключением, конечно, переопределения IPython до 6.x).
В заключение, используйте Co
чтобы открыть новые строки и дождаться исправления ошибок или перехода на IPython 6.x.
Esc o
- или мне так сказали.