IPython上手学习笔记

IPython上手学习笔记

Learning IPython for Interactive Computing and Data Visualization这本书的前两章的笔记, 这本书还被放在了IPython官网上, 虽然只有一百页多一点点, 但是讲的内容却很丰富, 介绍了IPython, numpy, pandas以及并行计算等方面.

(在开始系统学IPython之前简单使用过IPython, 那时候我还是更喜欢bpython的代码提示功能...)

ch1: 10 IPython essentials

在任何变量后面加问号?或者双问号??, 将会输出详细的信息(按q退出),??的信息更加详细些

Tab Completion: 没啥好说的 没有bpython做的好 也凑合吧...

_, __, ___保存最近三次的输出;_i, __i, ___i保存最近三次的输入(作为字符串保存)

magic commands

在IPython里面可以使用一些标准unix命令, 比如cd,pwd,ls等...

这个太好了 否则还要import os, 然后再什么os.chdir('...')

其实这些unix命令是IPython的magic commands, 这些magic commands一般用%作为前缀.

但是由于默认IPython开启了automagic system, 上面那些命令可以不用加前缀了(或者使用Tab自动给加上前缀)

%run命令, 运行一个.py脚本, 但是好处是, 与运行完了以后这个.py文件里的变量都可以在Ipython里继续访问

%timeit命令, 可以用来做基准测试(benchmarking), 测试一个命令(或者一个函数)的运行时间

%debug命令: 当有exception的时候, 在console里输入%debug即可打开debugger.

在debugger里, 输入u,d(up, down)查看stack, 输入q退出debugger

使用%pdb开启自动pdb模式

%pdb

Automatic pdb calling has been turned ON

%pylab命令, 大杀器, 看一下都import了什么:

画图的时候可以不用非要加plt.前缀了, 直接plot()即可. 图像化出来的时候, 画图窗口并没有block, 可以动态(interactively)画图.

另外, qtconsole和notebook一样, 指定了inline选项以后可以直接在窗口里画图:

后来发现inline的图片貌似不能放大看, 所以有时候还是单独一个窗口比较好, 换到非inline模式只需要再输入以下%pylab, 加上选项qt:%pylab qt

IPython Notebook

(重头戏)

这个可以在浏览器里(!!)使用IPython, 并且可以使用多行编辑后再一并执行.

The Notebook brings the functionality of IPython into the browser for multiline textediting features, interactive session reproducibility, and so on.

在shell/cmd窗口里启动ipython的时候加上notebook:

$ipython notebook

看到浏览器打开了, 很神奇:

新建一个notebook, 用用看:

使用的过程中渐渐理解了为什么书里说可以用来做"multiline textediting features, interactive session reproducibility"... 因为这不只是个编程的东西, 还可以作为一个笔记本 — 而且是一个交互式的笔记本!

(注: 更多关于notebook的介绍在下面第二章的内容里.)

代码,或者段落, 按照cell(格子)进行组织, 一个cell里面的内容可以是code, 但是也同样可以是markdown的段落, 或者是一个标题(heading).

在一个代码的cell里, 写入多行代码, 就像在编辑器里写python程序一样, 按回车只会换行, 不会运行程序.

写了一段程序代码以后, 按ctrl+Enter运行程序, 运行结果也是一个作为cell. (: 在qtconsole里面相反, 如果要输入多行程序的话, 按Ctrl+Enter换行(按一一次ctrl+enter即可进入多行编辑模式), 写了几行代码以后要运行的话, 就按两次回车, 或者按Shift+Enter)

...还有好多快捷键, 按Esc以后再按h就可以看到... 这个还分编辑模式和命令模式呢... 真不能小看了IPython了!

customizing IPython

保存自己的IPython配置文件, 只需要在shell/cmd里输入ipython profile create,配置文件存储在~.ipython或者~/.config/ipython目录里.

ch2: Interavtive Work with IPython

IPython可以实现shell(OS)和python的交互. 这样做一些unix shell的操作的时候可以不必退出console了.

navigating the file system

例子: 完成下载压缩包, 解压缩, 以及打开解压后的文件这些操作...

在py变量前面加入$, 可以把这个变量共享给OS或者magic command:

folder='data'%mkdir$folder

这样就在当前目录下建立一个'data'文件夹 — 这可比py的命令好记多了啊...%mkdir的原理其实是给了shell命令一个别名(alias).

然后,%bookmark可以把当前的目录加入收藏夹 下次cd的时候方便直接跳到这里来:

ex.%bookmark bm那么以后可以直接用cd bm跳到这个目录下.%bookmark -l可以列出收藏夹的目录内容.

然后发现原来IPython连文件名都是可以提示的啊!...

with open('0<tab>

0.circles 0.edges

Accessing system shell with IPython

在IPython里调用系统的命令, 不用再使用sys.exec('...')之类冗长的方式了, 只需要在系统的命令前面加上一个感叹号!即可...

shell返回的结果可以作为一个string的列表保存在一个python variable里.

(当然 上面这一行只能在unix系统下运行, 因为Windows的cmd没有ls 和 grep命令)

还可以把一条比较长的命令作为alias保存起来, 用%alias命令... (这个应该一般用不到)

%alias largest ls -1sSh | grep %s

The Extended Python Console

%history或者%hist, 显示之前的记录, 有一些参数可用...

%store把python变量的内容保存下来, 以后的session可以用

%paste导入并执行剪贴板里面的内容

%run之前讲过了, 运行py文件, 运行后py文件里的变量可以在console里访问

%edit打开系统的文件编辑器, 并且在关闭这个编辑器时自动运行程序

介绍了一个包 networkx, 可以用来分析复杂网络(graph)的....

debug

debug加入断点:%run -d -b29 script.py运行script.py 并且在29行的时候暂停, 当输入c的时候再继续运行.

一些pdb(debugging环境)里常用的命令:

u/d for going up/down into the call stack

s to step into the next statement

n to continue execution until the next line in the current function

r to continue execution until the current function returns

c to continue execution until the next breakpoint or exception

p to evaluate and print any expression

a to obtain the arguments of the current functions

The!prefix to execute any Python command within the debugger

benchmarking("基准测试")

%time it fun()测试一个函数的执行速度

%run -t和%timeit效果类似, 作用是测试一个py脚本文件的执行速度

更精细的运行时间测试, 可以用profile模块

The profiler outputs details about calls of every Python function used directly or indirectly in this script.

@@...好高级!!! 这样的话就更容易发现程序运行的瓶颈在哪里了! 方法是使用%run -p或者%prun

Using the IPython notebook

这个notebook的功能实在是很NB... 不仅可以加入代码/markdown段落, 还可以加入图片和视频... notebook的格式为.ipybn文件, 用JSON存储数据.

输入ipython notebook(或者在ipython里输入!ipython notebook)以后, 会在8888端口建立一个web server, 访问http://localhost:8888/就可以看到上面的那个截图, 或者称之为notebook dashboard.

cell magics的作用域是整个cell(多行), 而magic command的作用域是一行, cell magics的前缀是两个百分号%%.

从一个py文件直接建立一个notebook, 只需要把文件拖入dashboard即可, 然后notebook也可以保存为文件.

编辑了Markdown以后, 还是Ctrl+Enter/Shift+Enter, 即可成为格式化的文本, 再双击就可以编辑!!

让plot的图片直接嵌入在notebook里面: 使用ipython notebook --pylab inline, 或者在notebook里面输入%pylab inline

notebook的一些快捷键

Esc从编辑模式(edit mode)退出到命令模式(command mode)

Enter从命令模式到编辑模式

(编辑模式下)

ctrl+Enter: 运行程序/markdown代码

shift+Enter: 运行程序, 并自动跳到下一个cell

alt+Enter: 运行程序, 并自动在后面新建一个cell在

(命令模式下)

c: 复制一个cell

x: 剪切一个cell

v: 粘贴cell

a: 在当前cell上面(above)新建一个cell

b: 在当前cell下面(below)新建一个cell

m: 让当前cell变成一个markdown的cell

y: 让当前cell变成code的cell

1,2,3...: n级标题

j,k: 上下移动选中的cell, vim风格..

dd(d按两下): 删除一个cell(vim 风格...)

......爽到爆!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容