IPython提供了改进的交互式Python Shell,我们可以利用IPython来执行Python语句,并能够立刻看到结果,这一点跟Python自带的shell工具没有什么不同,但是IPython额外提供了很多实用的功能是Python自带的shell所没有的,下面就来看看这些实用的功能吧。

Tab自动补全

使用过Linux命令行的同学都知道tab自动补全有多实用吧,IPython可以针对之前输入过的变量,对象的方法等进行自动补全。我们只需要输入一部分,就可以看到命名空间中所有相匹配的变量,函数等

1.JPG

这个示例显示了,当输入mylist. 之后按tab键就自动出现的可以使用的method。

tab补全还可以针对文件路径进行补全,例如下面的例子在输入Anaconda之后按tab自动显示路径下的所有可选路径

2.JPG

内省

在变量的前面或者后面加问号?就可以查询改对象相关的信息(简要信息),有的时候对象的描述信息较多时,需要两个问号??来显示全部信息.

3.JPG

魔术命令

魔术命令(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功能。

下面仅就常用的魔术命令做下介绍:

%run 命令

该命令可以直接执行python脚本,并输出结果,比如我们有一个python文件如下:

# test.py

def main():

print "this is a test."

if __name__ == '__main__':

main()

在IPython中执行如下图:

run.JPG

%paste 和 %cpaste命令

我们经常会将python文件中的代码粘贴到IPython中执行,以便查看效果,尤其是针对现实图形的代码。这时如果直接拷贝粘贴,IPython可能无法正确的执行,这是因为IPython一旦遇到空行就认为粘贴结束,然后就开始执行了。

例如,我们有如下代码:

def add(x, y):

result = x + y

print result

add(1, 2)

如果直接拷贝粘贴到IPython当中,就会报错,如下:

paste.JPG

这时我们就需要使用%paste或者%cpaste来粘贴了,先拷贝代码,然后在IPython中输入%paste,结果如下:

paste_cmd.JPG

%cpaste也可以粘贴代码,与%paste区别就是它可以持续粘贴(即continue paste),直到我们按Ctrl+D或者输入双减号"--"以结束粘贴

%pdb

用以打开/关闭自动pdb唤出功能,当我们打开这个功能的时候(通过%pdb on 或者%pdb 1),程序一旦遇到exception就会自动调用pdb,进入pdb交互界面(如果要关闭该功能可以通过%pdb off 或者%pdb 0)

例如我们有一个test2.py文件如下:

def raise_exception():

var_before_exception = 1

raise Exception("test")

var_after_exception = 2

print var_before_exception

print var_after_exception

raise_exception()

当我们打开pdb开关后,执行如下图所示:

pdb.JPG

可以发现pdb在raise exception的地方被唤出了。

%edit

用于启动一个编辑器。在Linux上会启动vim,在Windows上会启动notepad。我们可以在编辑器上编辑代码,保存退出后就会执行相应代码。

!cmd

!后可以跟一个shell指令,从而在IPython界面就可以直接执行shell指令而不需要再退出IPython了

例如下面执行一条ping命令:

ping.JPG

除上述魔术命令外,IPython还提供了很多其它命令,下表列出了常用的一些命令,如果要查看完整列表,请使用%lsmagic

命令

命令说明

%hist

查询输入的历史

%reset

清空namespace

%prun

使用Python profiler运行python代码。注:profiler是用于测试代码性能的工具

%time

用于显示Python语句的执行时间,包括cpu time和wall clock time

%timeit

用于显示Python语句的执行时间,但是这个命令会多次执行相应的语句(可以指定次数)%timeit只针对一行Python语句,如果有多条语句,需要用分号分隔开,同时%%timeit是cell-oriented魔术命令,紧跟在命令后面的语句是作为setup code的,在cell body中的代码才会被timeit多次执行并计算时间

%bookmark

用于存储常用路径

%cd

进入目录命令

%env

显示系统环境变量

%pushd dir

将当前目录入栈,并进入dir指定的目录

%popd

弹出栈顶目录

matplotlib集成和pylab模式

IPython在使用matplotlib库生成图形的时候,仍然可以在IPython交互界面输入和操作,这是它比Python shell强大的一个重要功能点,使得我们在做科学计算的时候,可以更好的与数据交互并可视化。而要使用此功能,需要在启动IPython的时候,开启pylab模式,如下

$ipython --pylab

输入和输出

IPython的交互界面提示符分为In和Out,In代表输入并在后面的中括号中带有行号,如: In [2]:

Out代表输出,同样也有行号。IPython提供了一下几种快捷方式方便我们操作输入和输出:

● _ 和_: 单下划线代表上一个输出,双下划线代表上上个输出

● _iX和_X: X代表行号,_iX代表第X行的输入的字符串,_X代表输出的字符串

● exec:我们可以利用exec命令来执行历史的输入操作

下图展示了如何利用这些快捷方式更方便的进行输入和输出的操作:

inout.JPG

键盘快捷键

IPython提供了类似Linux的快捷键操作方式,可以方便我们的命令操作

快捷键

说明

Ctrl + A

光标移到行首

Ctrl + E

光标移到行尾

Ctrl + K

删除从光标开始到行尾的字符

Ctrl + U

删除从光标开始到行首的字符

Ctrl + R

搜索匹配的历史命令

Ctrl + P或上箭头

搜索之前的历史命令

Ctrl + N或下箭头

搜索之后的历史命令

Ctrl + L

清屏

总而言之,IPython为我们提供了很多强大的功能,本篇文章只是简要概述了下IPython的强大之处,还有很多有待大家自己去探索,尤其值得一提的是IPython还提供了notebook功能,也非常强大,由于篇幅所限,大家可以自己在网上搜索相关文章来参考。

ipython和pylab模式_为什么要使用IPython?相关推荐

  1. ipython和pylab模式_matplotlib集成与pylab模式

    matplotlib集成与pylab模式 导致IPython广泛应用于科学计算领域的部分原因是它能跟matplotlib这样的库以及其他GUI工具集默契配合.即使你从未使用过matplotlib也不用 ...

  2. 启动ipython_iPython pylab模式启动方式

    iPython pylab模式启动方式 在命令行窗口(CMD窗口)输入 ipython --pylab 或者在ipython 环境下输入%pylab 补充知识:%matplotlib inline 被 ...

  3. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  4. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  5. 小米6怎么解除温控_小米6性能模式_小米6性能模式怎么关

    小米6性能模式怎么关_小米手机6_MIUI论坛 1080x1920 - 201KB - PNG 小米6性能模式没了 720x1280 - 32KB - JPEG 小米6怎么没有性能模式了_开发者交流_ ...

  6. 史上最详细、最完全的ipython使用教程,Python使用者必备!——ipython系列之二

    声明:本文承接前面一篇文章,ipython系列之一:另外,本文所指的ipython不是ipython notebook,ipython notebook已经被jupyter notebook所取代,不 ...

  7. ipython源代码怎么打开_CentOS 6.4 中IPython如何启动Qt控制台和NoteBook?

    在CentOS 6.4 中安装好IPython后,可以快捷键Alt+F2,出现如下画面: 然后输入ipython qtconsole --pylab再回车即可: 如此即可出现ipython 基于Qt的 ...

  8. python的repl模式_为什么解释器的交互模式又叫 REPL

    今天着重介绍 Python 解释器的交互式模式. 什么是 REPL REPL 是 4 个单词的首字母组:Read Eval Print Loop. 它表示一个循环中,在这个循环中不断的执行: Read ...

  9. ios单应用模式_如何为iOS 13暗模式设置应用

    ios单应用模式 Apple launched the much-awaited iOS 13 updates globally on September 19 across all iPhones ...

最新文章

  1. Nat.Commun.|使用基于注意力机制的多标签神经网络预测并解释12种RNA修饰
  2. 修改ubuntu崩溃转储的设置
  3. 哪款浏览器好用_碉堡了!火狐浏览器发布重大更新,谷歌Chrome请hold住!
  4. SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
  5. Android多个音频源采集,android音频采集
  6. Halcon阈值分割
  7. 125KHz 100cm ID 读卡电路_NX系列PLC-NX-ID数字输入单元_欧姆龙继电器_欧姆龙PLC_欧姆龙接近开关...
  8. UVa 10141 - Request for Proposal
  9. 《机器学习—李宏毅》HW1
  10. [JZOJ4274] 终章-剑之魂
  11. Mac安装Java反编译工具JD-GUI(解决打不开问题)
  12. win10系统Microsoft Edge连接不上Internet
  13. 虚拟机NAT模式无法连外网
  14. AndroidStudio检测不到模拟器的解决方案(百试不爽)
  15. 阿里云内网和公共NTP服务器(网络时间协议-时间同步服务)
  16. android微信分享图片踩坑之旅
  17. Javascript错误处理——try...catch
  18. 商铺选址“风水”是门学问 大数据解读一步差三市主因
  19. java 多少位表示一个字_一个字多少个字符
  20. 直播平台流媒体服务器搭建(Linux+Nginx+RTMP)

热门文章

  1. Object-C中self和super的区别
  2. hadoop fs命令
  3. 另一种将线程并入应用程序的方法-委托
  4. [转] 关于SQLSERVER2000卸载与出现挂起问题的解决
  5. Response.Redirect 产生的“正在中止线程”错误
  6. Android MultiAutoCompleteTextView多文本输入提示
  7. WM有约II(一):你在干嘛?
  8. 彻底禁用chrome请停用以开发者模式运行的扩展程序弹框
  9. sql语句查询数据库中含有某字符串的表名
  10. 手机游戏产品经理(七)创建本地化产品的意见