重要

本文档涵盖 IPython 6.0 及更高版本。从 6.0 版本开始,IPython 不再支持与低于 Python 3.3 的 Python 版本(包括所有版本的 Python 2.7)兼容。

如果您正在寻找与 Python 2.7 兼容的 IPython 版本,请使用 IPython 5.x LTS 版本并参阅其文档(LTS 是长期支持版本)。

IPython 提示和技巧

IPython 食谱详细介绍了您可以使用 IPython 完成的更多操作。

在程序中嵌入 IPython

几行代码就足以在您自己的程序中加载一个完整的 IPython,让您在自动处理完成后以交互方式处理数据。请参阅嵌入部分

运行 doctest

在 IPython 中从内部运行 doctest 以进行开发和调试。特殊的%doctest_mode命令切换到一种模式,其中提示、输出和异常显示尽可能与默认 Python 解释器匹配。此外,此模式允许您直接粘贴包含前导“>>>”提示的代码,即使它们有额外的前导空格(在 doctest 文件中很常见)。这与%hist -t调用结合使用以查看已翻译的历史记录,从而实现轻松的 doctest 工作流,您可以在需要时从 doctest 转到交互式执行再粘贴到有效的 Python 代码。

使用 IPython 呈现交互式演示

使用IPython.lib.demo.Demo类将任何 Python 脚本加载为交互式演示。通过最少的简单标记,您可以控制脚本的执行,根据需要停止。请在此处了解更多信息。

禁止输出

在行尾放置“;”以禁止打印输出。这在执行计算并生成您不感兴趣的长输出时很有用。它还会将对象保留在输出缓存之外,因此如果您使用大型临时对象,它们将更快地从内存中释放。

轻量级“版本控制”

当您不带参数调用 %edit 时,IPython 使用临时文件打开一个空编辑器,并将编辑会话的内容作为字符串变量返回。由于 IPython 的输出缓存机制,这会自动存储

In [1]: %edit

IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py

Editing... done. Executing edited code...

hello - this is a temporary file

Out[1]: "print('hello - this is a temporary file')\n"

现在,如果您调用 %edit -p,IPython 将尝试使用与上次使用 %edit 时相同的数据打开一个编辑器。因此,如果您在此期间未使用 %edit,则将重新打开相同的内容;但是,它将在新文件中完成。这意味着,如果您进行更改,并且以后想要查找旧版本,则始终可以通过使用其输出编号(通过“%edit _NN”,其中 NN 是输出提示的编号)来检索它。

继续上面的示例,这应该说明这个想法

In [2]: edit -p

IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py

Editing... done. Executing edited code...

hello - now I made some changes

Out[2]: "print('hello - now I made some changes')\n"

In [3]: edit _1

IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py

Editing... done. Executing edited code...

hello - this is a temporary file

IPython version control at work :)

Out[3]: "print('hello - this is a temporary file')\nprint('IPython version control at work :)')\n"

本节是在 Alexander Belchenko 在 IPython 用户列表上做出贡献后编写的。