1. 程式人生 > >【轉】iPython入門技巧

【轉】iPython入門技巧

其它 效率 設計 mage 系統 運行 上下 print 空格

【轉】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更加友好

(二)個性化和配置

【轉】iPython入門技巧