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 風格...)

......爽到爆!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容