學習《利用python進行數據分析》第三章 IPython:一種交互式計算和開發環境的筆記,共享給你們,同時爲本身做爲備忘用。python
安裝ipython用pip便可。ps.博主用的是win7系統,因此接下來的都是在windows系統下操做的。shell
一.Ipython基礎編程
啓動:開始菜單-輸入cmd-回車-輸入ipythonwindows
初嘗試數組
二.Tab鍵自動完成瀏覽器
在shell中輸入表達式時,只要按下Tab鍵,當前命令控件中任何與輸入的字符串相匹配的變量(對象、函數等)就會被找出來。服務器
ps.以前我發現個人ipython沒有Tab鍵自動補全功能,tab鍵的功能是縮進。最後 pip install pyreadline便可解決。markdown
下面這個例子,輸入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,在此粘貼給你們做爲備忘。
八.異常和跟蹤
九.魔術命令
粘貼在此以做備忘
命令 說明
%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']*100000 method1 = [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更加友好
(二)個性化和配置