【转】iPython入门技巧

【转】http://www.cnblogs.com/cuiyubo/p/6823478.html

学习《利用python进行数据分析》

第三章 IPython:一种交互式计算和开发环境的笔记,共享给大家,同时为自己作为备忘用。

安装ipython用pip即可。ps.博主用的是win7系统,所以接下来的都是在windows系统下操作的。


 

一.Ipython基础

启动:开始菜单-输入cmd-回车-输入ipython

初尝试


二.Tab键自动完成

在shell中输入表达式时,只要按下Tab键,当前命令控件中任何与输入的字符串相匹配的变量(对象、函数等)就会被找出来。

ps.之前我发现我的ipython没有Tab键自动补全功能,tab键的功能是缩进。最后 pip install pyreadline即可解决。

下面这个例子,输入b.后按下<tab>键即可得到下图的结果。

三.内省

在变量的前面或后面加上一个问号(?)就可以将有关该对象的一些通用信息显示出来。这就叫做对象的内省。

如果对象是一个函数或实例方法,则其docstring也会被现实出来。

使用??还将显示出该函数的源代码。

一些字符串配以通配符(*)即可显示出所有与该通配符表达式相匹配的名称。

例如,我们可以列出Numpy顶级命名空间中含有“load”的所有函数

 


 

四.%run命令

在ipython会话环境中,所有文件都可以通过%run命令当做Python程序来运行。

输入 %run 路径+python文件名称即可。

ps.《集体智慧编程》里面代码的执行可以用这个


 

五.中断正在执行的代码(急性子必备23333)

按下Ctrl-C就会引发一个KeyboardInterrupt。除了一些非常特殊的情况下,绝大部分python程序都会立即停止执行


六.执行剪贴板中的代码

书上说使用ctrl+shift+v将剪贴板的代码片段粘贴出来,然而windows系统似乎不可行,所以鼠标右键粘贴好了。

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

%cpaste跟%paste差不多,只不过它多出了一个用于粘贴代码的特殊提示符而已。如果发现粘贴的代码有错,只需要按下ctrl+c即可终止%cpaste提示如。


七.键盘快捷键

其实不到真正使用我也记不住23333,在此粘贴给大家作为备忘。

  1. Ctrl-P    或上箭头键 后向搜索命令历史中以当前输入的文本开头的命令
  2. Ctrl-N   或下箭头键 前向搜索命令历史中以当前输入的文本开头的命令
  3. Ctrl-R   按行读取的反向历史搜索(部分匹配)
  4. Ctrl-Shift-v   从剪贴板粘贴文本
  5. Ctrl-C   中止当前正在执行的代码
  6. Ctrl-A   将光标移动到行首
  7. Ctrl-E   将光标移动到行尾
  8. Ctrl-K   删除从光标开始至行尾的文本
  9. Ctrl-U   清除当前行的所有文本译注12
  10. Ctrl-F   将光标向前移动一个字符
  11. Ctrl-b   将光标向后移动一个字符
  12. Ctrl-L   清屏

八.异常和跟踪

九.魔术命令

粘贴在此以作备忘

命令 说明
%quickref 显示IPython的快速参考
%magic 显示所有魔术命令的详细文档
%debug 从最新的异常跟踪的底部进入交互式调试器
%hist 打印命令的输入(可选输出)历史
%pdb 在异常发生后自动进入调试器
%paste 执行剪贴板中的Python代码
%cpaste 打开一个特殊提示符以便手工粘贴待执行的Python代码
%reset 删除interactive命名空间中的全部变量/名称
%page OBJECT 通过分页器打印输出OBJECT
%run script.py 在IPython中执行一个Python脚本文件
%prun statement 通过cProfile执行statement,并打印分析器的输出结果
%time statement 报告statement的执行时间
%timeit statement 多次执行statement以计算系综平均执行时间。对那些执行时  间非常小的代码很有用
%who、%who_ls、%whos 显示interactive命名空间中定义的变量,信息级别/冗余度可变
%xdel variable 删除variable,并尝试清除其在IPython中的对象上的一切引用

十.基于Qt的富GUI控制台

Ipython团队开发了一个基于Qt框架(其目的是为终端应用程序提供诸如内嵌图片、多行编辑、语法高亮之类的富文本剪辑功能)的GUI控制台。

使用

ipython qtconsole --pylab=inline

来启动的话可为其添加绘图功能。

ps.这一步刚开始无法执行,我的解决方法是:

pip install qtconsole,就可以运行了- -..

十一.matplotlib集成与pylab模式

通常我们通过在启动Ipython时加上--pylab标记来集成matplotlib

注意空格啊~是

ipython --pylab

十二.使用历史命令

十三.搜索并重用历史命令

历史命令用上下箭头就好啦,ctrl+p和ctrl+n 太麻烦啦。

ctrl+r用于实现部分增量搜索,按下ctrl+r并输入你想搜索的行中的几个字符。按下ctrl+r将会循环搜索历史命令中每一条与输入相符的行。

十四.输入和输出变量

ipython将最近的两个输出结果保存在_(一个下划线)和__(两个下划线)变量中

输入的文本被保存在名为_iX的变量中,其中X是输入行的行号。比如说,在输入完27行后,就会产生两个新变量_27(输出变量)和_i27(输入变量)

十五.记录输入和输出

执行%logstart既可开始记录日志

 十六.与操作系统交互

 

十七.shell命令和别名

在ipython中,以感叹号(!)开头的命令行表示其后的所有内容需要在系统shell中执行。

##再启动一个python解释器

在使用!时,ipython还允许使用当前环境中定义的python值。只需要在变量名前面加上$即可

魔术命令%alias可以为shell命令自定义简称。

这是怎么回事儿~!

十八.目录书签系统

ipython有一个简单的目录书签系统,它使你能保存常用目录的别名以实现快速跳转。

十九.软件开发工具

(一)交互式调试器

调试代码的最佳时期之一就是错误刚刚发生那会儿。

%debug命令(在发生异常之后马上输入)将会调用哪个“事后调试器”,并直接跳转到引发异常的那个栈帧(stack frame)

这儿需要打开ipython_bug.py文件,需要的同学可以问我要,路径还需要自己改一改。

在这个调试器中,可以执行任意python代码并查看各个栈帧中的一切对象和数据(也就是解释还“留了条生路”的那些)。

默认从最低级开始的(即错误发生的地方)。

输入u(up)和d(down)即可在栈跟踪的个级别之间的切换

执行%Pdb命令可以让ipython在出现异常之后自动调用调试器。

此外,调试器还可以为代码开发工作提供帮助,尤其是当你想要设置断点或对函数、脚本进行单步调试以查看各条语句的执行情况时。

实现这个目的的方式有几个:

(二)调试器的其它使用场景

(三)测试代码的执行时间:%time和%timeit

有时候你可能会希望了解某个复杂计算过程中到底是哪些函数占用的时间最多。

ipython专门提供了两个魔术函数(%time和%timeit)以便自动完成该过程。

%time一次执行一条语句,然后报告总体执行时间。

例子:下面是一个拥有60万字符串的数组,以及两个不同的“能够选出其中以foo开头的字符串”的方法:

#一个非常大的字符串数组
strings = ['foo','foobar','baz','qux','python','Guido Van Rossum']*100000
method1 = [x for x in strings if x.startswith('foo')]
mathod2 = [x for x in strings if x[:3] == 'foo']

通过%time来测试:

但是这并不是一个非常精确的结果,如果你对相同的语句多次执行%time的话,就会发现其结果是会变的。

为了得到更为精确的结果,需要使用魔术函数%timeit,对于任意语句,它会自动多次执行以产生一个非常精确的平均执行时间。

(四)基本性能分析:%prun和%run -p

(五)逐行分析函数性能

二十.Ipython HTML Notebook

IPython Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果。在浏览器的界面中使用单元(Cell)保存各种信息。Cell有多种类型,经常使用的有表示格式化文本的Markdown单元,和表示代码的Code单元。

每个代码单元都有一个输出区域,在Code单元中输入代码,按 Shift-Enter 将运行此代码,代码中最后一个表达式的值将输出区域显示。如果希望屏蔽输出,可以在最后一条语句之后添加一个分号:”;”。此外,代码中还可以使用 print语句在输出区域中显示信息。

在Markdown单元中还可以直接使用Html和Javascript。

二十一.利用ipython提高代码开发效率的几点提示

(一)重新加载模块依赖项

(二)代码设计提示

1.保留有意义的对象和数据

2.扁平结构要比嵌套结构好

3.无惧大文件

二十一.高级ipython功能

(一)让你的类对ipython更加友好

(二)个性化和配置

 

转载于:https://www.cnblogs.com/wwwwwei/p/10646729.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程控制:进程的创建、终止、阻塞、唤醒和切换

进程控制的主要功能是对系统中的所有进程实施有效的管理&#xff0c;它具有创建新进程、撤销已有进程、实现进程状态转换等功能。在操作系统中&#xff0c;一般把进程控制用的程序段称为原语&#xff0c;原语的特点是执行期间不允许中断&#xff0c;它是一个不可分割的基本单位…

jnlp下载

下载.jnlp文件里的内容需先安装好java Java安装好&#xff0c; java环境变量配置http://jingyan.baidu.com/article/4ae03de320d99f3eff9e6bfd.html 打开cmd&#xff08;WinR&#xff09;如下输入javaws \文件路径\ TCIA_REMBRANDT_06-22-2015.jnlp 后&#xff0c;按回车: 按…

使用Dagger 2在GWT中进行依赖注入

依赖注入是一种软件开发概念&#xff0c;其中为对象提供了创建所需的所有对象或值。 GWT用户已经熟悉GIN&#xff0c;但已不推荐使用此工具&#xff0c;因此不再支持&#xff0c;因此使用GIN的应用程序当前确实需要告别。 Dagger是GWT的新依赖注入框架。 对于那些不熟悉该框架的…

Java Web Token - JWT

JWT认证过程&#xff1a;https://www.codetd.com/article/3602378 JWT官方文档&#xff1a;https://jwt.io/introduction/转载于:https://www.cnblogs.com/leodaxin/p/10648358.html

中断和异常,陷阱的区别和联系

对于中断&#xff0c;异常和陷阱的各种关系&#xff0c;总结如下&#xff1a; 表 2.1. 中断&#xff0c;异常和陷阱的区别和联系 对CPU来说是 和当前CPU所执行的指令的关系CPU接下来的事情程序员和用户的态度中断被动的异步的没关系跳转到对应的ISR希望有对应的中断&#xff0c…

matlab global(全局变量)

如果想让某个函数中定义的变量能够被其他函数调用&#xff0c;需要用到全局变量。注意&#xff0c;在这两个函数中都要用global修饰这个变量。如&#xff1a; function t1 global x; x0; function t2 global x; yx end

win 2016 ssh_多台WIN10之间的SSH免密登录

网上有很多关于使用win10-ssh客户端登录linux-ssh服务端的介绍&#xff0c;但很少介绍多台win10-ssh服务端之间互访的。以下记录如何免密登录win10-ssh服务。1、安装OpenSSH。网上有很多介绍通过添加win10可选功能安装openssh&#xff0c;此处不赘述。如果通过添加可选功能出现…

Windows下安装及使用NVM

所谓nvm就是一个可以让你在同一台机器上安装和切换不同版本node的工具。这里是一篇安装及使用教程。 第一步&#xff1a;下载nvm 到github上下载最新版本https://github.com/coreybutler/nvm-windows/releases nvm-noinstall.zip&#xff1a; 这个是绿色免安装版本&#xff0c;…

Operating System-Thread(5)弹出式线程使单线程代码多线程化会产生那些有关问题

Operating System-Thread(5)弹出式线程&&使单线程代码多线程化会产生那些问题本文主要内容 弹出式线程&#xff08;Pop-up threads)使单线程代码多线程化会产生那些问题 一、弹出式线程&#xff08;Pop-up threads) 以在一个http到达之后一个Service的处理为例子来介绍…

cad2016中选择全图字体怎么操作_CAD2016 软件安装教程

安装包下载地址[软件名称]: CAD 2016[安装环境]: Win 10/Win 8/Win 7/Win xp[CAD2016 32-64bit下载链接]:https://pan.baidu.com/s/1AaeIZrJ6IlvBg3QiY3apWw[提取码]&#xff1a;oqcg(建议复制粘贴链接与提取码)安装中有问题可以咨询微信&#xff1a;XYSHY2CAD 2016介绍AutoCAD…

JavaScipt30(第八个案例)(主要知识点:canvas)

承接上文&#xff0c;这是第8个案例&#xff0c;要实现的效果是按住鼠标不放&#xff0c;进行拖动时可以在画布上画出不同粗细不同颜色的曲线。 附上项目链接: https://github.com/wesbos/JavaScript30 主要思路&#xff1a;鼠标按下时&#xff0c;记录当前x,y坐标&#xff0c;…

死锁的产生、预防和避免

死锁是由于并发进程只能按互斥方式访问临界资源等多种因素引起的&#xff0c;并且是一种与执行时间和速度密切相关的错误现象。死锁的一般定义&#xff1a;若在一个进程集合中&#xff0c;每一个进程都在等待一个永远不会发生的事件而形成一个永久的阻塞状态&#xff0c;这种阻…

python numpy.random模块中提供啦大量的随机数相关的函数

1. numpy中产生随机数的方法 1)rand()   产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状 2)randn()  产生标准正太分布随机数&#xff0c;参数含义与random相同 3)randint()  产生指定范围的随机数&#xff0c;最后一个参数是元祖&#xff0c;他确定数组的…

eclipse复制代码连接数据库404_再见,Eclipse ...

点击上方“Java基基”&#xff0c;选择“设为星标”做积极的人&#xff0c;而不是积极废人&#xff01;源码精品专栏 中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业…

单页vue路由router

Vue.js vue-router 可以很简单的实现单页应用。 <router-link> 是一个组件&#xff0c;该组件用于设置一个导航链接&#xff0c;切换不同 HTML 内容。 to 属性为目标地址&#xff0c; 即要显示的内容。 以下实例中我们将 vue-router 加进来&#xff0c;然后配置组件和路…

python 多线程为什么鸡肋?

什么是全局解释器锁GIL Python代码的执行由Python 虚拟机(也叫解释器主循环&#xff0c;CPython版本)来控制&#xff0c;Python 在设计之初就考虑到要在解释器的主循环中&#xff0c;同时只有一个线程在执行&#xff0c;即在任意时刻&#xff0c;只有一个线程在解释器中运行。对…

usb端点轮询_使用Spring Integration轮询http端点

usb端点轮询如果您想用Spring Integration编写一个流程来轮询HTTP端点并从http端点收集一些内容以进行进一步处理&#xff0c;那有点不直观。 Spring Integration提供了几种与HTTP端点集成的方式- Http出站适配器–将消息发送到http端点 Http出站网关–将消息发送到http端点…

tensorflow下载

以下下载的为tensorflow版本为1.2.1 GPU python3.6 python3.5 https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.2.1-cp35-cp35m-win_amd64.whlhttps://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.2.1-cp36-cp36m-win_amd64.wh…

make时候说找不到makefile_找不到对象,应不应该接受相亲?听听三个过来人怎么说...

找我分享你的故事&#xff0c;点击右上角关注&#xff0c;你就是我的人了&#xff01;相信每一个人都有这样一个愿望&#xff1a;希望在自己感情的世界里面能够遇到一个执子之手&#xff0c;与子偕老的人共度余生。可是不是每个人都能够那么幸运的&#xff0c;那么轻易的就遇上…