强大的Python Shell:IPython

标签:Python

以前一直使用Python自带的交互式Shell,感觉也还够用,至少比Ruby好;不过今天用了下IPython,发现它实在太强了,支持彩色高亮显示、代码补完、魔术函数、宏、编辑和保存文件、调用操作系统的Shell命令等功能。

先看下它长什么样:

第2行会注意到自动缩进,不需要自己去多敲空格了。
第4行我用了一个问号,它会显示这个对象的信息。
第5行我在a.i后敲了个tab,然后就自动显示了以i开头的属性名;并且由于这2个方法都是in开头,所以接下来会自动填充成a.in。
第6行可以看到,和标准的Shell一样会显示repr信息。
第7行我用了一个timeit魔法函数,它比使用timeit模块方便多了。
第8行说明这个timeit是有副作用的。
第9行演示了保存代码,同时也看到了魔法函数的实现。

看完演示后,如果对它感兴趣,就去下载吧。
IPython的下载页面里提供了很多版本,Windows下使用binary Windows installer版最方便。安装时自动找到了我装的Python 2.5/2.6/3.1,不过我装在2.5下了。
装好后就可以去运行C:\Python25\Scripts\ipython.bat了。不过会提示你没有readline,因此不支持彩色高亮显示和代码补完。
于是再去下载PyReadline,仍然使用安装版,装好后就正常了。

我最感兴趣的是魔术函数,因此仍然介绍它。
IPython会判断输入的字符是否符合魔术函数,是的话就调用魔术函数,否则使用Python来解析。
如何知道所有的魔术函数呢?方法很简单,输入lsmagic即可。
你会发现列出来的魔术函数都是%开头的,并且提示automagic开启,无需输入%。
也就是说,魔术函数实际上都是以%开头的,所以输入%,再按tab键,也可以列出所有魔术函数。
而要知道用法的话,输入magic就行了。
再介绍一个很好玩的魔术函数%bg:在后台调用另一个线程来执行一段函数。注意所有资源(包括stdout)都是共享的。执行完后可以用jobs对象来获取执行结果。习惯unix的应该会对此很熟悉。
其他的就自己看吧,定义宏也是用魔术函数。

最后再介绍下如何调用操作系统的Shell。
方法很简单,在命令前加上!符号即可,例如:
!dir c:\
如果要和Python的变量交互的话,变量前要加$符号,例如:
path = r'C:\Python25'
!dir $path -w
Python也能使用Shell的返回值,不过是以行为单位的字符串列表:
d = !dir $path -w
for l in d:
    print l

0条评论 你不来一发么↓

    想说点什么呢?