02. IPython 的安装及使用

1. IPython 的介绍

Ipython 是一个 python 的交互式 shell,比默认的 python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。学习Ipython 将会让我们以一种更高的效率来使用 python。同时它也是利用 Python 进行科学计算和交互可视化的一个最佳的平台。

IPython 提供了两个主要的组件:
  1. 一个强大的 python 交互式 shell;
  2. 供 Jupyter notebooks 使用的一个 Jupyter 内核(IPython notebook)。
IPython 的主要功能如下:
  1. 运行 ipython 控制台 ;
  2. 使用 ipython 作为系统 shell ;
  3. 使用历史输入(history) ;
  4. Tab 键自动补全 ;
  5. 使用%run命令运行脚本 ;
  6. 使用%timeit命令快速测量时间 ;
  7. 使用%pdb命令快速 debug ;
  8. 使用%edit命令打开当前函数编辑;
  9. 使用%save命令把某些历史记录保存到文件;
  10. 使用%debug命令激活debug程序;
  11. 使用 pylab 进行交互计算 ;
  12. 使用 IPython Notebook。

2. IPython 的安装

Ipython 支持 Python2.7 版本或者3.3 以上的版本,此处用的是 windows 下的 python 3.7.9 版本。

  1. 安装 ipython 很简单,可以直接使用 pip 管理工具即可:
pip install ipython    # 这条命令会自动安装IPython以及它的各种依赖包
安装 ipython
  1. 如果还想在 notebook 中或者在 Qt console 中使用 IPython,我们还需要安装 Jupyter,如下命令:
pip install jupyter
安装 jupyter
  1. 另外还可能需要安装一些用到的库:
  • NumPy 高性能多维数组矢量运算库:
pip install numpy
安装 numpy
  • Matplotlib 绘图以及交互式可视化:
pip install matplotlib
安装 matplotlib

3. IPython 的交互式使用

IPython 支持所有 python 的标准输入输出,也就是我们在 IDLE 中或者 Python shell 中能用的,在 IPython 中都能够使用,唯一的不同之处使 ipython 会使用 In [x]Out [x] 表示输入输出,并表示出相应的序号。后面我们会知道,InOut 是两个保存历史信息的变量。

进入 IPython 也非常简单,直接 win + R 打开运行,然后输入ipython 即可进入 IPython shell 交互框。

进入 ipython 交互框

3.1 Tab 键自动补全

在 shell 中输入表达式时,只要按下 Tab 键,当前命名空间中任何与输入的字符串相匹配的变量(对象或者函数等)就提示出来,这时可以通过键盘的向下翻页键找到自己需要的对象。

Tab键自动补全

3.2 内省

在变量的前面或者后面加上一个问号 ?,就可以将有关该对象的一些通用信息显示出来,这就叫做对象的内省。

内省

如果对象是一个函数或者实例方法,则它的 docstring 也会被显示出来,定义方法如下:

定义方法

查看该方法的内省信息:

查看方法的内省信息

如果使用两个问号 ??,还可以显示出该方法的源代码:

查看方法的内省信息

此外,可以使用通配符字符串查找出所有与该通配符字符串相匹配的名称,比如查找 re 模块下所有的包含find的函数:

使用通配符字符串查找

3.3 使用历史命令 history

在 IPython shell 中,使用历史命令可以简单地使用上下翻页键即可,也可以使用hist命令(或者history命令)查看所有的历史输入。(正确的做法是使用%hist,在这里,%hist也是一个魔法命令)

使用历史命令

如果在hist命令之后加上-n,即hist -n也可以显示出输入的序号:

使用历史命令

在任何的交互会话中,输入历史和输出历史都会被保存在InOut变量中,并被序号进行索引。
另外,_______i_ii_iii变量保存着最后三个输出和输入对象。_n_in(这里的n表示具体的数字)变量返回第n个输出结果和输入内容的历史命令。
比如:_3输出第3条语句的输出结果,_i3输出第3条语句的内容。

In 和 Out 变量

3.4 使用 %run 命令运行脚本

在 ipython 会话环境中,所有文件都可以通过%run命令当做 Python 程序来运行,输入%run 路径+python文件名称即可

3.5 使用 %timeit 命令快速测量代码运行时间

在一个交互式会话中,可以使用%timeit魔法命令快速测量代码运行时间。相同的命令会在一个循环中多次执行,多次运行时长的平均值作为该命令的最终评估时长。-n 选项可以控制命令在单词循环中执行的次数,-r选项控制执行循环的次数。

快速测量代码运行时间

3.6 使用 %debug 命令进行快速 debug

ipython 带有一个强大的调试器。无论何时控制台抛出了一个异常,我们都可以使用%debug魔法命令在异常点启动调试器。接着你就能调试模式下访问所有的本地变量和整个栈回溯。使用ud向上和向下访问栈,使用q退出调试器。在调试器中输入?可以查看所有的可用命令列表。可以使用%pdb魔法命令来激活IPython调试器,这样,每当异常抛出时,调试器就会自动运行。

3.7 使用 Pylab 进行交互式计算

%pylab魔法命令可以使Numpymatplotlib中的科学计算功能生效,这些功能被称为基于向量和矩阵的高效操作,交互可视化特性。它能够让我们在控制台进行交互式计算和动态绘图。

使用 Pylab 进行交互式计算

在该示例中,我们首先定义了一个 -1010 的线性空间中的 1000 个数值的向量,接着绘制 (x,sin(x)) 图像,这样我们就成功绘制出了sin(x)的函数图像:

sin(x)的函数图像

3.8 在 IPython 中使用系统 shell

我们可以在 IPython 中直接使用系统 shell,并获取读取结果作为一个 Python 字符串列表。为了实现这种功能,需要使用感叹号 ! 作为 shell 命令的前缀。比如现在在我的 windows 系统中,直接在 IPython 中ping 百度:

ping 百度

此外,在 IPython 中调用系统 shell 可以再次进入一个新的 IPython shell 中。

进入一个新的 IPython shell 中

4. 使用 IPython Notebook

IPython Notebook 使用浏览器作为界面,向后台的 IPython 服务器发送请求,并显示结果。在浏览器的界面中使用单元(Cell)保存各种信息。Cell 有多种类型,需要强调的是,它也支持 MarkDown 语法,所以可以有 MarkDown 格式化文本单元,也可以有表示代码的 Code 单元。

IPython Notebook 有一个重要的特点就是:可重复性的互动计算,这意味着我们可以重复更改并且执行曾经的输入记录。它可以保存成其他很多格式,比如 Python脚本HTMLPDF 等,所以它可以记录我们的演算过程。很多课程,博客以及书籍都是用 Notebook 写的。

4.1 安装并运行

前面 IPython 的安装过程如果你都已经执行过了,那么 IPython Notebook 就算是安装好了。至于怎么测试呢?
Win + R打开运行窗口,输入ipython notebook,如果正确安装的话,这个命令就会默认在本地 8888 端口启动一个 web 服务,并自动打开浏览器,打开http://localhost:8888/tree页面,在这个页面我们可以看到当前目录下的所有文件夹以及ipynb文件。当然,如果不想在当前默认目录启动该Web服务器的话,就在 cmd 窗口下切换目录之后再运行ipython notebook

打开 ipython notebook

自动打开,如下页面:

网页 jupyter

我们可以点击当前目录下的 Notebook 文件进行编辑,也可以新建 Notebook。

使用 notebook

编辑 Notebook 可以选择代码模式文本编辑模式,也可以导出各种不同格式的文件。

编写代码运行

由于 IPython Notebook 是基于 Web 服务模式的,所以我们可以在远程服务器打开 IPython 服务器,在本地客户端启动 IPython Web 交互界面,这样可以很方便地操作远程数据。

4.2 操作

在一个输入框即Cell中使用回车即Enter键,表示换行,也就是说一个Cell中可以输入多条语句。
一个Cell中的命令可以由两种方式运行:

  1. Shift + Enter小格内的所有代码将会在当前的 IPython 交互命名空间中运行,运行结果将会立即在输入框下面的输出区域显示,且一个新的输入框会出现。
  2. Ctrl + Enter组合键只会显示运行结果而不会创建新的输入框。

也可以使用上面的菜单栏和工具栏对Cell进行各种增删复制粘贴等操作。

你可能感兴趣的:(02. IPython 的安装及使用)