ipython和pylab模式_为什么要使用IPython?
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?相关推荐
- ipython和pylab模式_matplotlib集成与pylab模式
matplotlib集成与pylab模式 导致IPython广泛应用于科学计算领域的部分原因是它能跟matplotlib这样的库以及其他GUI工具集默契配合.即使你从未使用过matplotlib也不用 ...
- 启动ipython_iPython pylab模式启动方式
iPython pylab模式启动方式 在命令行窗口(CMD窗口)输入 ipython --pylab 或者在ipython 环境下输入%pylab 补充知识:%matplotlib inline 被 ...
- RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03
服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...
- RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02
服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...
- 小米6怎么解除温控_小米6性能模式_小米6性能模式怎么关
小米6性能模式怎么关_小米手机6_MIUI论坛 1080x1920 - 201KB - PNG 小米6性能模式没了 720x1280 - 32KB - JPEG 小米6怎么没有性能模式了_开发者交流_ ...
- 史上最详细、最完全的ipython使用教程,Python使用者必备!——ipython系列之二
声明:本文承接前面一篇文章,ipython系列之一:另外,本文所指的ipython不是ipython notebook,ipython notebook已经被jupyter notebook所取代,不 ...
- ipython源代码怎么打开_CentOS 6.4 中IPython如何启动Qt控制台和NoteBook?
在CentOS 6.4 中安装好IPython后,可以快捷键Alt+F2,出现如下画面: 然后输入ipython qtconsole --pylab再回车即可: 如此即可出现ipython 基于Qt的 ...
- python的repl模式_为什么解释器的交互模式又叫 REPL
今天着重介绍 Python 解释器的交互式模式. 什么是 REPL REPL 是 4 个单词的首字母组:Read Eval Print Loop. 它表示一个循环中,在这个循环中不断的执行: Read ...
- ios单应用模式_如何为iOS 13暗模式设置应用
ios单应用模式 Apple launched the much-awaited iOS 13 updates globally on September 19 across all iPhones ...
最新文章
- Nat.Commun.|使用基于注意力机制的多标签神经网络预测并解释12种RNA修饰
- 修改ubuntu崩溃转储的设置
- 哪款浏览器好用_碉堡了!火狐浏览器发布重大更新,谷歌Chrome请hold住!
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- Android多个音频源采集,android音频采集
- Halcon阈值分割
- 125KHz 100cm ID 读卡电路_NX系列PLC-NX-ID数字输入单元_欧姆龙继电器_欧姆龙PLC_欧姆龙接近开关...
- UVa 10141 - Request for Proposal
- 《机器学习—李宏毅》HW1
- [JZOJ4274] 终章-剑之魂
- Mac安装Java反编译工具JD-GUI(解决打不开问题)
- win10系统Microsoft Edge连接不上Internet
- 虚拟机NAT模式无法连外网
- AndroidStudio检测不到模拟器的解决方案(百试不爽)
- 阿里云内网和公共NTP服务器(网络时间协议-时间同步服务)
- android微信分享图片踩坑之旅
- Javascript错误处理——try...catch
- 商铺选址“风水”是门学问 大数据解读一步差三市主因
- java 多少位表示一个字_一个字多少个字符
- 直播平台流媒体服务器搭建(Linux+Nginx+RTMP)