ipython
互動式計算系統
IPython是一個互動式計算系統。主要包含三個組件:增加的互動式“Python shell”,解耦的雙過程通信模型,互動式并行計算的架構。支持變數自動補全。
IPython 是一個 python 的互動式 shell,比默認的python shell 好用得多,支持變數自動補全,自動縮進,支持 bash shell 命令,內置了許多很有用的功能和函數。
IPython 是基於BSD 開源的。
IPython 為互動式計算提供了一個豐富的架構,包含:
• 強大的互動式 shell
• Jupyter 內核
• 互動式的數據可視化工具
• 靈活、可嵌入的解釋器
• 易於使用,高性能的并行計算工具
在ubuntu 下只要 sudo apt-get install ipython 就裝好了,通過 ipython 啟動。
下面是 ipython 中幾個簡單好用的 magic函數:
%bg function把 function 放到後台執行,例如: %bg myfunc(x, y,z=1),之後可以用jobs將其結果取回。myvar = jobs.result(5) 或 myvar =jobs[5].result。另外,jobs.status() 可以查看現有任務的狀態。
%ed 或 %edit編輯一個文件並執行,如果只編輯不執行,用 ed -x filename 即可。
%env顯示環境變數
%hist 或 %history顯示歷史記錄
%macro name n1-n2 n3-n4 ... n5 .. n6 ...創建一個名稱為 name 的宏,執行 name 就是執行 n1-n2 n3-n4 ... n5 .. n6 ...這些代碼。
%pwd顯示當前目錄
%pycat filename用語法高亮顯示一個 python 文件(不用加.py後綴名)
%save filename n1-n2 n3-n4 ... n5 .. n6 ...將執行過多代碼保存為文件
%time statement計算一段代碼的執行時間
%timeit statement自動選擇重複和循環次數計算一段代碼的執行時間。
另外,ipython 中用 ! 表示執行 shell 命令,用 $ 將 python 的變數轉化成shell 變數。通過這種兩個符號,就可以做到和 shell命令之間的交互,可以非常方便地做許多複雜的工作。比如可以很方便地創建一組目錄:
for i in range(10):
s = "dir%s" % i
!mkdir $s
不過寫法上還是有一些限制,$ 後面只能跟變數名,不能直接寫複雜表達式,$"dir%s"%i 就是錯誤的寫法了,所以要先完全產生python 的變數以後再用。像
for i in !ls: print i
這樣的寫法也是錯的,可以這樣:
a = !ls
for i in a: print i
還有一點需要說明,就是執行普通的 shell 命令中如果有 $的話需要用兩個 $。比如原來的echo $PATH現在得寫成!echo$$PATH。
在較新的ipython版本中,添加了ipython notebook的功能,彌補了ipython shell下代碼不易保存等缺點,並且在使用 --pylab inline選項后,可以在代碼執行后立即顯示運行結果(包括圖片,數據表格等),因此在數據分析中運用十分廣泛。
摘自:大頭技術文檔