我在zsh shell中使用IPython,我在定义多行函数时遇到问题。
例如,在原始的 Python shell 中,我可以定义一个函数 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 版本的东西。
Matthias Bussonier建议使用C-o
(即控制o(作为权宜之计。C-o
当前行下方打开新的空白行,您可以使用箭头键访问和编辑 - 这不是一个非常令人满意的解决方案,但现在没有其他解决方案(当然,除了将IPython降级到6.x(。
最后,使用C-o
打开新行并等待错误修复或降级到 IPython 6.x。
附加信息
Spyder维护者之一卡洛斯·科尔多瓦(Carlos Cordoba(在对我的回答的评论中说,qtconsole
也受到此错误的影响......
此外,在IPython 7.1 shell 中修复的错误仍然存在于同一版本的qtconsole
中,我提到的权宜之计(Ctrl-o
在当前下方打开一行(在qtconsole
中不起作用。