14.1. IPython:增强的Python解释器

对于Python来说,开发环境有很多种选择,作者经常会被问到他在自己工作中使用哪一个。答案有时会让提问者感到吃惊:作者习惯的环境是IPython 在加上一个文本编辑器(取决于作者的心情,可能是Emacs或者Atom)。IPython(是交互式Python的缩写)是Fernando Perez在2001年创建的一个增强Python解释器的项目,目前已经发展成为一个超级工具,目标是提供(用Perez自己的话来说)“研究计算领域完整生命周期的工具”。如果类比Python是我们数据科学的引擎的话,那么你可以认为IPython就是一个交互式的控制面板。

除了提供Python十分方便的交互式界面外,IPython还提供了一些语言的语法扩展;我们会在这里介绍其中最有用的扩展内容。 并且,IPython紧密的绑定在Jupyter项目之上,Jupyter能够提供一个浏览器界面的笔记本(译者注:后续一律称为notebook,不再翻译该名词),能够非常方便的开发、合作、分享甚至发布数据科学的结果。 IPython notebook是Jupyter这个庞大项目中的Python部分,后者希望为Julia、R和其他编程语言都能提供notebook功能。 本书就可以作为notebook格式的一个有力证明:所有本书的内容都是使用IPython notebook编写的。

IPython的目标是让科学和数据计算在Python中更加有效和具有交互性。本章将会介绍许多对于数据科学实践来说非常有用的IPython特性,尤其聚焦在它提供在Python标准之外的语法扩展。 然后,我们将会进一步深入到一些有用的“魔术命令”中,这些命令能够提高你在编写和使用数据科学代码的时候的生产效率。 最后,我们将接触到在notebook当中有用的数据分析和分享结果的特性。

14.1.1. Shell 还是 Notebook?

IPython提供了两种主要的使用方法,Shell和Notebook。本章将会都使用到,例子将会根据最方便的方式切换。如果某些小节只会使用到其中一个,作者会明确指出。在我们开始之前,我们先来学习如何启动shell和notebook。

Launching the IPython Shell

启动IPython Shell

本章和本书大多数章节一样,不是希望你只是被动学习。作者建议当你阅读的时候,能够跟着内容进行实践,对我们介绍的工具和语法进行试验:在此过程中你将会获得肌肉记忆,这远比简单的阅读牢靠的多。 启动IPython解释器,你只需要在命令行上输入``ipython``即可;同样的,如果你安装的是Anaconda或者EPD这样的发行版,那么你的操作系统上可能会有相应的启动图标(我们会在IPython帮助和文档中更详细的讨论)。

当你输入命令后,你应该会看到如下的一个提示符:

IPython 4.0.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
In [1]:

然后,你就可以接着往下进行了。

启动Jupyter Notebook

Jupyter notebook是一个浏览器图形界面的IPython shell,上面构建了一整套丰富的动态展示功能。 除了能够执行Python/IPython代码,notebook还允许用户书写格式化的文本,静态和动态的展示数学公式,JavaScript组件和其他很多功能。然后这些文档能被保存成一种能让其他人在他们自己的系统中打开和执行的文件格式。

虽然IPython notebook在你的浏览器窗口中展示和编辑,但是它需要连接到一个执行中的Python进程才能真正执行代码。这个进程(被称为“kernel”)可以在命令行中使用下面的命令启动:

$ jupyter notebook

这个命令会启动一个web服务器让你的浏览器访问。它会立刻在你的控制台打印出日志,日志的格式类似下面:

$ jupyter notebook
[NotebookApp] Serving notebooks from local directory: /Users/jakevdp/PythonDataScienceHandbook
[NotebookApp] 0 active kernels
[NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

输入上述命令之后,你系统的默认浏览器应该会自动打开然后指向本地的地址;完整的地址取决于你的系统。如果你的浏览器没有自动打开,你可以手动打开它并输入地址(本例中是http://localhost:8888/ )。