標籤:blog images 讀取 軟體開發工具 多行 foo win7系統 基於 gic
引用: http://www.cnblogs.com/zzhzhao/p/5295476.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,在此粘貼給大家作為備忘。
- Ctrl-P 或上方向鍵 後向搜尋命令曆史中以當前輸入的文本開頭的命令
- Ctrl-N 或下方向鍵 前向搜尋命令曆史中以當前輸入的文本開頭的命令
- Ctrl-R 按行讀取的反向曆史搜尋(部分匹配)
- Ctrl-Shift-v 從剪貼簿粘貼文本
- Ctrl-C 中止當前正在執行的代碼
- Ctrl-A 將游標移動到行首
- Ctrl-E 將游標移動到行尾
- Ctrl-K 刪除從游標開始至行尾的文本
- Ctrl-U 清除當前行的所有文本譯註12
- Ctrl-F 將游標向前移動一個字元
- Ctrl-b 將游標向後移動一個字元
- 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(輸入變數)
我這兒就拿第八行舉例子吧2333
十五.記錄輸入和輸出
執行%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‘]*100000method1 = [x for x in strings if x.startswith(‘foo‘)]mathod2 = [x for x in strings if x[:3] == ‘foo‘]
通過%time來測試:
啦啦啦 差距出來了。
但是這並不是一個非常精確的結果,如果你對相同的語句多次執行%time的話,就會發現其結果是會變的。(親測真的會變233看)
為了得到更為精確的結果,需要使用魔術函數%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使用學習筆記