浅谈高效率交互式Python开发神器——IPython的实战
Python编程学习圈 5天前IPython是一种基于Python的交互式解释器,提供了强大的编辑和交互功能。它支持变量自动补全,自动缩进,支持Bash Shell命令,内置大量很有用的功能和函数。Python是利用Python进行科学计算和交互可视化的一个最佳的平台。学习IPython将会让我们以一种更高的效率来使用Python。IPython提供了两个主要的组件:1.一个强大的python交互式shell2.供Jupyter Notebook使用的一个IPython内核IPython的主要功能如下:1.运行ipython控制台2.使用ipython作为系统shell3.使用历史输入(history)4.Tab补全5.使用魔术命令6.使用IPython Notebook一、安装IPython[注]本文所有讨论环境基于Python3,笔者使用版本是Python3.8.5可以直接使用pip包管理器安装:pip install ipython这条命令会自动安装IPython以及它的各种依赖包如果我们也想在notebook中或者在Qtconsole中使用IPython,我们还需要安装jupyterpip install jupyter安装可能需要用到的库:NumPy高性能多维数组矢量运算库:pip install numpyMatplotlib绘图以及交互式可视化:pip install matplotlib[建议]可以直接使用Anaconda。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,集成度高且包管理系统先进。二、交互式使用IPythonIPython支持所有python的标准输入输出,也就是我们在IDLE中或者Python shell中能用的,在IPython中都能够使用,唯一的不同之处使ipython会使用In [x]和Out [x]表示输入输出,并表示出相应的序号。其实In和Out是两个保存历史信息的变量。进入IPython可以直接在命令行输入ipython(或win + R打开运行,直接输入ipython)即可进入IPython shell交互框;
![](http://pic.ikafan.com/imgp/L3Byb3h5L2h0dHBzL2ltYWdlMTA5LjM2MGRvYy5jbi9Eb3dubG9hZEltZy8yMDIxLzAzLzEzMTMvMjE3NTg5NTMyXzFfMjAyMTAzMTMwMTM5NTYyNzE=.jpg)
或者输入ipython qtconsole进入ipython图形交互界面:
![](http://pic.ikafan.com/imgp/L3Byb3h5L2h0dHBzL2ltYWdlMTA5LjM2MGRvYy5jbi9Eb3dubG9hZEltZy8yMDIxLzAzLzEzMTMvMjE3NTg5NTMyXzJfMjAyMTAzMTMwMTM5NTY1MDU=.jpg)
1.Tab键自动补全在shell中输入表达式时按下Tab键,当前命名空间中任何与输入的字符串相匹配的变量(对象或者函数等)就会被找出来:2.内省和命名空间搜索在变量的前面或者后面加上一个问号`?`,就可以将有关该对象的一些通用信息显示出来,这就叫做对象的内省。如果对象是一个函数或者实例方法,则它的docstring也会被显示出来:定义方法如下:这时查看该方法的内省信息:如果使用两个问号??,那么还可以显示出该方法的源代码:我们可以使用通配符字符串查找出所有与该通配符字符串相匹配的名称,比如我们查找re模块下所有的包含find的函数:3.魔术命令魔术命令(Magic Commands)是IPython提供一整套命令,用这些命令可以操作IPython本身,以及提供一些系统功能。魔术命令分为两种:一种是基于行的(line-oriented), 命令只针对一行;另一种是基于单元的(cell-oriented),命令可以针对多行,均作为其参数。比如:下面这个%timeit魔术命令就是line-oriented%timeit range(1000)下面的魔术命令是cell-oriented%timeit x = numpy.random.rann((100, 100))numpy.linalg.svd(x)[注]这里timeit只针对svd进行测试,不会针对x变量的赋值做测试。IPython提供了很多类似的魔术命令,如果你想看都有哪些魔术命令,可以通过%lsmagic来查询,如果想查询某个命令的详细信息,可以通过%cmd?来获取,例如:%run?另外,默认情况下automagic是ON状态,也就是说对于line-oriented命令我们不需要使用前面的百分号%,直接输入命令即可(例如:timeit range(1000) ),但是对于cell-oriented命令我们必须输入%%,可以通过%automagic来打开/关闭这个automagic功能。3.1使用历史命令%hist在IPython shell中,使用历史命令可以简单地使用上下翻页键即可,另外我们也可以使用%hist命令查看所有的历史输入。在%hist命令之后加上-n,即%hist -n也可以显示出输入的序号:在任何的交互会话中,我们的输入历史和输出历史都会被保存在In和Out变量中,并被序号进行索引。另外,_,__,___和_i,_ii,_iii变量保存着最后三个输出和输入对象。_n和_in(这里的n表示具体的数字)变量返回第n个输出和输入的历史命令。比如:3.2使用%run命令运行脚本在ipython会话环境中,所有文件都可以通过%run命令当做Python程序来运行,输入%run 路径+python文件名称即可3.3使用%timeit命令快速测量代码运行时间在一个交互式会话中,我们可以使用%timeit魔法命令快速测量代码运行时间。相同的命令会在一个循环中多次执行,多次运行时长的平均值作为该命令的最终评估时长。-n 选项可以控制命令在单词循环中执行的次数,-r选项控制执行循环的次数。
![](http://n4.ikafan.com/assetsj/blank.gif)
3.4使用%debug命令进行快速debugipython带有一个强大的调试器。无论何时控制台抛出了一个异常,我们都可以使用%debug魔法命令在异常点启动调试器。接着你就能调试模式下访问所有的本地变量和整个栈回溯。使用u和d向上和向下访问栈,使用q退出调试器。在调试器中输入?可以查看所有的可用命令列表。我们也可以使用%pdb魔法命令来激活IPython调试器,这样,每当异常抛出时,调试器就会自动运行。3.5使用%pylab进行交互式计算%pylab魔法命令可以使Numpy和matplotlib中的科学计算功能生效,这些功能被称为基于向量和矩阵的高效操作,交互可视化特性。它能够让我们在控制台进行交互式计算和动态绘图。
![](http://n4.ikafan.com/assetsj/blank.gif)
我们首先定义了一个-10到10的线性空间中的1000个数值的向量,接着我们绘制了(x,sin(x))图像,这样我们就成功绘制出了sin(x)的函数图像:3.6.使用%paste和%cpaste命令我们经常会将python文件中的代码粘贴到IPython中执行,以便查看效果,尤其是针对现实图形的代码。这时如果直接拷贝粘贴,IPython可能无法正确的执行。这时我们就需要使用%paste或者%cpaste来粘贴了,先拷贝代码,然后在IPython中输入%paste。3.7.使用%pdb用以打开/关闭自动pdb唤出功能,当我们打开这个功能的时候(通过%pdb on 或者%pdb 1),程序一旦遇到exception就会自动调用pdb,进入pdb交互界面(如果要关闭该功能可以通过%pdboff 或者%pdb 0)4.在IPython中使用系统shell我们可以在IPython中直接使用系统shell,并获取读取结果作为一个Python字符串列表。为了实现这种功能,我们需要使用感叹号!作为shell命令的前缀。比如现在在我的windows系统中,直接在IPython中ping百度:一个有趣的事情是,在IPython中调用系统shell可以再次进入一个新的IPython shell中,如下:
![](http://n4.ikafan.com/assetsj/blank.gif)
5.使用JupyterNotebookJupyter Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果。在浏览器的界面中使用单元(Cell)保存各种信息。Cell有多种类型,需要强调的是,它也支持MarkDown语法,所以可以有MarkDown格式化文本单元,也可以有表示代码的Code单元。Jupyter Notebook有一个重要的特点就是:可重复性的互动计算,这意味着我们可以重复更改并且执行曾经的输入记录。它可以保存成其他很多格式,比如Python脚本,HTML,PDF等,所以它可以记录我们的演算过程。很多课程,博客以及书籍都是用Notebook写的。如果执行了上文中IPython的安装过程,Jupyter Notebook已经算是安装好了。怎么测试呢?Win + R打开运行窗口,输入Jupyter notebook,如果正确安装的话,这个命令就会默认在本地8888端口启动一个web服务,并自动打开浏览器,打开http://localhost:8888/tree页面,在这个页面我们可以看到当前目录下的所有文件夹以及ipynb文件。当然,如果不想在当前默认目录启动该Web服务器的话,就在cmd窗口下切换目录之后再运行jupyter notebook:
![](http://n4.ikafan.com/assetsj/blank.gif)
自动打开如下页面:
![](http://n4.ikafan.com/assetsj/blank.gif)
我们可以点击当前目录下的Notebook文件进行编辑,也可以新建Notebook:编辑Notebook可以选择代码模式和文本编辑模式,也可以导出各种不同格式的文件:由于Jupyter Notebook是基于Web服务模式的,所以我们可以在远程服务器打开Jupyter服务器,在本地客户端启动Jupyter Web交互界面,这样可以很方便地操作远程数据。在一个输入框即Cell中使用回车即Enter键,表示换行,也就是说一个Cell中可以输入多条语句。一个Cell中的命令可以由两种方式运行:(1)Shift + Enter小格内的所有代码将会在当前的IPython交互命名空间中运行,运行结果将会立即在输入框下面的输出区域显示,且一个新的输入框会出现。(2)Ctrl + Enter组合键只会显示运行结果而不会创建新的输入框我们也可以使用上面的菜单栏和工具栏对Cell进行各种增删复制粘贴等操作。6.键盘快捷键IPython提供了大量类似Linux的快捷键操作方式快捷键说明Ctrl + A光标移到行首Ctrl + E光标移到行尾Ctrl + K删除从光标开始到行尾的字符Ctrl + U删除从光标开始到行首的字符Ctrl + R搜索匹配的历史命令Ctrl + P或上箭头搜索之前的历史命令Ctrl + N或下箭头搜索之后的历史命令Ctrl + L清屏声明:来源于网络,如有侵权,告知必删。喜欢此内容的人还喜欢Python系统关键字 “超全总结” 及其 “含义”Python系统关键字 “超全总结” 及其 “含义”...数据分析与统计学之美不喜欢不看的原因确定内容质量低不看此公众号学 Python 怎能不知 yield ?学 Python 怎能不知 yield ?...无量测试之道不喜欢不看的原因确定内容质量低不看此公众号数据岗面试:常用哪些Python第三方库?数据岗面试:常用哪些Python第三方库?...小数志不喜欢不看的原因确定内容质量低不看此公众号