本文主要介绍IPython这样一个交互工具的基本用法。
1. 简介
IPython是《利用Python进行数据分析》一书中主要用到的Python开发环境,简单来说是对原生python交互环境的增强。作者进行Python开发最经典的开发环境搭配是:IPython外加一个文本编辑器,其实我自己平时写python代码也差不多是这样的开发环境:Windows系统下是IPython加notepad++,Linux系统下是IPython加vim,写起代码来体验很流畅,很容易获取到那种“流体验”。
书中讲到,IPython的设计目的是在交互式计算和软件开发这两个方面最大化地提高生产力,它鼓励一种“执行-探索”的工作模式,支持matplotlib等库的绘图操作。同时IPython还提供一个基于WEB的交互式浏览器开发环境,用起来也很不错。
2. 基础用法
1. Tab键自动补全
和其他命令行环境的Tab自动补全功能类似,不过会隐藏那些以下划线开头的方法和属性(为了防止内容太多)。厉害的是哪怕是在python字符串中也可以自动补全类似文件路径的字符串。比如:
2. 内省
在方法或变量的前面或后面加一个问号(?)就可以将有关该方法或变量的一些通用信息都显示出来,这叫做内省;使用”??”还可以显示函数的源代码。见下:
3. ”?”和通配符结合使用搜索命名空间
4. %run命令
%run xxx.py
:可以执行一个python脚本xxx.py,脚本是在一个空的命名空间中运行的。成功运行脚本后,在IPython中可以使用脚本中定义的变量和函数。
如果希望在脚本中能访问IPython之前定义的变量和函数,那么需要用-i参数执行:%run -i xxx.py
5. 执行剪贴板中的代码
%paste
:直接执行。%cpaste
:可以修改后再执行。
6. IPython键盘快捷键
(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:删除从行首到光标处的文本。
(10)Ctrl + F:将光标向前移动一个字符。
(11)Ctrl + B:将光标向后移动一个字符。
(12)Ctrl + L:清屏。
7. 魔术命令
以”%”开头的一些命令,比如%run就是一个魔术命令,可以使用%run?来查看其详细用法。
(1)%quickref
:显示IPython的快速参考。
(2)%magic
:显示所有魔术命令的详细文档。
(3)%debug
:从最新的异常跟踪的底部进入交互式调试器。
(4)%hist
:打印命令的输入(可选输出)历史。
(5)%pdb
:在异常发生后自动进入调试器。
(6)%paste
:执行剪贴板中的python代码。
(7)%cpaste
:打开一个特殊特提示符以便手工粘贴待执行的python代码。
(8)%reset
:删除interactive命名空间中的全部变量/名称。
(9)%page OBJECT
:通过分页器打印输出OBJECT。
(10)%run xxx.py
:执行xxx.py脚本文件。
(11)%prun statement
:通过cProfile执行statement,并打印分析器的输出结果。
(12)%time statement
:计算statement的执行时间。
(13)%timeit statement
:多次执行(次数可以通过参数配置)statement以计算平均执行时间。对那些执行时间非常短的代码很有用。
(14)%who
:显示interactive命名空间中定义的变量,如下:
(15)%who_ls
:显示interactive命名空间中定义的变量(列表形式),如下:
(16)%whos
:显示interactive命名空间中定义的变量(详情形式),如下:
(17)%xdel variable
:删除变量variable,并尝试清除其在IPython中的对象上的一切引用。
8. 打开pylab模式:
启动IPython时使用:ipython --pylab
,这样就可以在IPython命令行中进行绘图等操作了,如下:
9. 输入和输出变量
最近的两个输出结果分别保存在下划线和双下划线两个变量中,如下:
10. 记录输入输出过的变量
某一行的输入变量:_iX(X为行号)
某一行的输出变量:_X(X为行号)
见下:
11. 清理命名空间
当处理大数据集时,IPython的输入输出历史会影响到大量的变量的内存释放,所以及时用%xdel和%reset清理还是很有必要的。
12. 记录日志
记录输入和输出日志:%logstart -o
,将记录整个会话的日志(包括之前的命令),使用详情可以用?命令查看。
13. 与操作系统交互
(1)!cmd
:执行操作系统的shell命令。
(2)output = !cmd
:执行shell命令,并将结果存到output中。
(3)%alias new_name cmd
:为系统shell命令定义别名。
(4)%bookmark
:使用IPython的目录书签系统。
(5)%cd directory
:将工作目录切换到directory路径。
(6)%pwd
:打印当前的工作目录。
(7)%pushd directory
:将当前目录入栈,并转向目标目录。
(8)%popd
:弹出栈顶目录,并转向该目录。
(9)%dirs
:返回一个含有当前目录栈的列表。
(10)%dhist
:打印目录访问历史。
(11)%env
:以dict形式返回系统环境变量。
14. 在执行shell命令时使用IPython环境中的变量
如下:
15. 使用书签
如下:
3. 进阶用法
1. 代码执行时间分析
命令:%time
、%timeit
,如下:
2. IPython HTML Notebook
HTML Notebook是在浏览器中使用的交互式环境,现在最新版本又叫做Jupyter Notebook,功能很强大,完全是一个B/S模式的IDE,体验非常棒。可以用以下命令打开:
(1)安装notebook:pip install notebook
(2)在命令行中打开notebook:ipython notebook
(或者:jupyter notebook
)
(3)出现一个带token的url,把url复制到浏览器中,即出现如下页面:
(4)点击右上角的”New”—>python 2,即可打开交互式环境:
(5)在输入行中输入%pylab inline
命令并执行(Shift + Enter快捷键),即可无缝集成matplotlib的绘图功能到页面中,如图:
注:Jupyter Notebook的更详细用法见另一篇博文:《利用Python进行数据分析》学习笔记系列——Jupyter Notebook
3. IPython个性化配置
配置文件在如下目录:
Unix:~/.config/ipython/
Windows:%HOME%/.ipython/
根据配置文件中的注释,即可修改相应的配置。
随机推荐
-
sys.stdout 重定向
通俗的来说,sys.stdout的功能类似与C++里面的文件输出功能fprintf. 接下来直接入正题,让我们来看代码: >>> import sys >>> te ...
-
【转】amCharts,一款值得推荐的Flash charts图组件
今天无意中看到一个利用Flash生成chart图的工具:amCharts,我一开始就觉得这些chart图非常眼熟,它的显示样式跟监控宝的是完全一样的,我通过查看网页的源文件,才知道原来监控宝就是用的这 ...
-
Button标签自动刷新问题
在form表单中,button标签在IE浏览器 type类型默认是button ,而在其他浏览器默认是submit. 解决方法1: 设置类型type="button" <bu ...
-
Java语言写出水仙花数,
package com.llh.demo;/** * 水仙花数 * @author llh * */public class Demo14 { public static void main(S ...
-
Backbone简单示例
要的资源: <script type="text/javascript" src="../dep/underscore-1.6.0.min.js"> ...
-
【朝花夕拾】四大组件之(一)Broadcast篇
前言 笔者最近在探究ANR及源码的过程中,发现对Broadcast的一些应用层面上的知识有的感觉比较生疏,有的记忆不准确,有的认识不完整.所谓“基础不牢,地动山摇”,于是就梳理了一下Broadcast ...
-
FCC(ES6写法) Map the Debris
返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: avgAlt}. 思路: 直接使用公式 ...
-
a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换
package com.Summer_0424.cn; /** * @author Summer * a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换? */ publi ...
-
pip的基本使用
pip的基本使用 1.pip简介 pip 是一个现代的,通用的 Python 包管理工具.提供了对 Python 包的查找.下载.安装.卸载的功能 pip是官方推荐的安装和管理Python包的工具,用 ...
-
Oracle导入程序Imp的使用详解
Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件.imp使用的基本格式:imp[username[/password[@service]]], ...