Python从入门到精通(微课精编版)
上QQ阅读APP看书,第一时间看更新

1.5 使用IPython

1.5.1 认识IPython

IPython是一个Python的交互式shell,比默认的Python shell更好用,支持变量自动补全、自动缩进,支持bash shell命令,内置很多有用的功能和函数。IPython能够帮助用户以一种更高的效率使用Python,同时也是利用Python进行科学计算和交互可视化的一个最佳的平台。

IPython提供了两个主要的组件,具体如下。

➢ 一个强大的Python交互式shell。

➢ 供Jupyter Notebook使用的一个Jupyter内核(IPython Notebook)。

IPython的主要功能如下。

➢ 运行Ipython控制台。

➢ 使用Ipython作为系统shell。

➢ 使用历史输入(history)。

➢ Tab补全。

➢ 使用%run命令运行脚本。

➢ 使用%timeit命令快速测量时间。

➢ 使用%pdb命令快速debug(程序除错)。

➢ 使用pylab进行交互计算。

➢ 使用IPython Notebook。

1.5.2 安装IPython

IPython支持Python 2.7版本,或者Python 3.3以上的版本。安装Ipython很简单,直接使用pip管理工具即可。在cmd命令行等终端输入下面命令,然后按Enter键即可。

    >pip install ipython

这条命令自动安装IPython以及它的各种依赖包。

如果想在Notebook或QtConsole中使用IPython,还需要安装Jupyter,命令如下:

    >pip install jupyter

如果已安装Anaconda,则默认自动安装IPython。

1.5.3 启动IPython

启动IPython的方法:打开命令对话框(快捷键为Windows+R),然后输入ipython命令,单击"确定"按钮之后,即可进入IPython shell交互界面。也可以在cmd命令行等终端下输入ipython命令直接进入IPython shell交互界面,如图1.23所示。

在命令对话框或者cmd命令行等终端下输入ipython qtconsole命令,启动Jupyter QtConsole,可以进入IPython图形交互界面,如图1.24所示。

图1.23 启动IPython

图1.24 启动Jupyter QtConsole

1.5.4 在IPython中编写代码

IPython支持所有Python的标准输入输出,也就是在IDLE或Python shell中能用的,在IPython中都能够使用,唯一不同之处就是IPython使用In [x]和Out [x]表示输入、输出,并表示相应的序号。实际上,In和Out是两个保存历史信息的变量。

IPython有很多Python交互没有的功能,如Tab补全、对象自省、强大的历史机制、内嵌的源代码编辑、集成Python调试器、断点调试等。

第1步,在命令提示符后面输入:x = [1,2,3],然后按Enter键换行。

第2步,输入变量x,然后按Tab键,则会提示与输入的字符串相匹配的变量,如对象或者函数等,通过键盘方向键找到需要的对象,如图1.25所示。

第3步,在变量的前面或者后面加上一个问号(?),然后按Enter键,就可以将有关该对象的一些通用信息显示出来,这就是对象内省,如图1.26所示。

图1.25 Tab键自动补全

图1.26 对象内省

第4步,如果对象是一个函数或者实例方法,则它的docstring(文档字符串)也会被显示出来,如图1.27所示。

第5步,如果使用两个问号(??),还可以显示该方法的源代码,如图1.28所示。

图1.27 显示docstring信息

图1.28 显示源代码

第6步,使用通配符字符串可以查找所有与该通配符字符串相匹配的名称。例如,查找re模块中所有包含find的函数,如图1.29所示。

第7步,使用hist或者history命令可以查看历史输入。如果在hist命令之后加上-n,也可以显示输入的序号,如图1.30所示。

图1.29 使用通配符进行查找

图1.30 显示历史输入

提示:在任何的交互会话中,用户的输入历史和输出历史都被保存在In和Out变量中,并被序号进行索引。另外,_、__、___和_i、_ii、_iii变量保存着最后三次输出和输入对象。_n和_in(n表示具体的数字)变量返回第n个输出和输入的历史命令,如图1.31所示。

第8步,使用run命令运行外部Python程序,输入格式为:run路径+Python文件名称,如图1.32所示运行上一节创建的示例test1.py。

图1.31 显示具体的输入和输出

图1.32 运行外部Python程序

提示:IPython常用魔术命令如下。

➢ %magic:显示所有魔术命令的详细文档。

➢ %hist:打印命令的输入(可选输出)历史。

➢ %time statement:报告statement的执行时间。

➢ %timeit statement:多次执行statement以计算系统平均运行时间。

➢ %reset:删除全部变量。

➢ %xdel variable:删除variable,并尝试清除其在IPython中对象的一切引用。

➢ %cd directory:将系统工作目录更改成directory。

➢ %pwd:返回系统的当前工作目录。

➢ %env:以dict形式返回系统环境变量。

➢ %bookmark:使用IPython目录书签系统。

➢ %paste:可以承载剪贴板中的一切文本,并在shell中以整体形式执行。

➢ %cpaste:与%paste功能类似,只是多了一个用于粘贴代码的特殊提示符。

➢ %run script.py:所有文件都可以通过%run命令当作Python程序来运行。

IPython标准键盘快捷键如下。

➢ 向上方向键:向后搜索历史命令。

➢ 向下方向键:向前搜索历史命令。

➢ Ctrl+R:部分增量搜索。

➢ Ctrl+C:终止当前正在执行的代码。

➢ Ctrl+A:将光标移动到行首。

➢ Ctrl+E:将光标移动到行尾。

➢ Ctrl+K:删除从光标开始至行尾的文本。

➢ Ctrl+U:清除当前行的所有文本。

➢ Ctrl+L:清屏。

1.5.5 使用Jupyter QtConsole

Jupyter QtConsole的前身叫作IPython QtConsole,与IPython Notebook一样,后来改成了Jupyter,Jupyter QtConsole是IPython团队基于Qt框架开发的一个GUI控制台,但是这个控制台很特殊,它具有富文本编辑功能,即能够在里面实现内嵌图片、多行编辑、语法高亮等富文本功能。QtConsole是一个具有菜单的富文本编辑的控制台,IPython具有的功能它都有,它是IPython的进一步改进版。

例如,在QtConsole里面输入如下代码,直接得到一个结果,如图1.33所示。

    import matplotlib.pyplot as plt
    x=[1,2,3,4,5]
    y=[2,4,6,8,10]
    plt.plot(x,y)

通过图1.33可以看到,代码所绘制的图像直接显示在QtConsole里面,不需要设置,非常人性化。这样的功能对于编写一个大型软件,使用QtConsole进行小模块的测试和试验,是特别有帮助的,这就是QtConsole的简单强大之处。

图1.33 直接绘图

注意:上面的操作是基于新版本的Jupyter QtConsole,默认已经将matplotlib集成到QtConsole中,但是对于老版本的IPython QtConsole,并没有集成,因此不能直接打开IPython QtConsole,而是要在cmd中使用命令ipython qtconsole --pylab=inline来打开才行。