1. IPython介紹
ipython
是一個
python
的互動式
shell
,比預設的
python shell
好用得多,支援變量自動補全,自動縮進,支援
bash shell
指令,内置了許多很有用的功能和函數。學習
ipython
将會讓我們以一種更高的效率來使用
python
。同時它也是利用Python進行科學計算和互動可視化的一個最佳的平台。
IPython提供了兩個主要的元件:
1.一個強大的python互動式shell
2.供Jupyter notebooks使用的一個Jupyter核心(IPython notebook)
IPython的主要功能如下:
1.運作ipython控制台
2.使用ipython作為系統shell
3.使用曆史輸入(history)
4.Tab補全
5.使用
%run
指令運作腳本
6.使用
%timeit
指令快速測量時間
7.使用
%pdb
指令快速debug
8.使用
pylab
進行互動計算
9.使用IPython Notebook
2. 安裝IPython
ipython支援Python2.7版本或者3.3以上的版本,我用的是windows下的python 3.4版本。
安裝ipython很簡單,可以直接使用pip管理工具即可:
pip install ipython
這條指令會自動安裝IPython以及它的各種依賴包
如果我們也想在notebook中或者在Qt console中使用IPython,我們還需要安裝Jupyter,如下指令:
pip install jupyter
另外我們還可能需要安裝一些用到的庫:
NumPy高性能多元數組矢量運算庫:
pip install numpy
Matplotlib繪圖以及互動式可視化:
pip install matplotlib
等等。
3. 互動式使用IPython
IPython支援所有python的标準輸入輸出,也就是我們在IDLE中或者Python shell中能用的,在IPython中都能夠使用,唯一的不同之處使ipython會使用
In [x]
和
Out [x]
表示輸入輸出,并表示出相應的序号。
其實後面我們會知道,In和Out是兩個儲存曆史資訊的變量
進入IPython也非常簡單,直接
win + R
打開運作,然後輸入
ipython
即可進入IPython shell互動框;
或者輸入
ipython qtconsole
進入ipython圖形互動界面:
除此之外,ipython支援一些更進階的功能。
3.1 Tab鍵自動補全
在shell中輸入表達式時,隻要按下Tab鍵,目前命名空間中任何與輸入的字元串相比對的變量(對象或者函數等)就會被找出來:
這時可以通過鍵盤的向下翻頁鍵找到自己需要的對象。
3.2 内省
在變量的前面或者後面加上一個問号
?
,就可以将有關該對象的一些通用資訊顯示出來,這就叫做對象的内省。
如果對象是一個函數或者執行個體方法,則它的docstring也會被顯示出來:
定義方法如下:
這時檢視該方法的内省資訊:
如果使用兩個問号
??
,那麼還可以顯示出該方法的源代碼:
另外,我們可以使用通配符字元串查找出所有與該通配符字元串相比對的名稱,比如我們查找
re
子產品下所有的包含
find
的函數:
3.3 使用曆史指令history
在IPython shell中,使用曆史指令可以簡單地使用上下翻頁鍵即可,另外我們也可以使用
hist
指令(或者
history
指令)檢視所有的曆史輸入。(正确的做法是使用
%hist
,在這裡,
%hist
也是一個魔法指令)
如果在
hist
指令之後加上
-n
,即
hist -n
也可以顯示出輸入的序号:
在任何的互動會話中,我們的輸入曆史和輸出曆史都會被儲存在
In
和
Out
變量中,并被序号進行索引。
另外,
_
,
__
,
___
和
_i
,
_ii
,
_iii
變量儲存着最後三個輸出和輸入對象。
_n
和
_in
(這裡的n表示具體的數字)變量傳回第n個輸出和輸入的曆史指令。比如:
3.4 使用 %run
指令運作腳本
%run
在ipython會話環境中,所有檔案都可以通過
%run
指令當做Python程式來運作,輸入
%run 路徑+python檔案名稱即可
3.5 使用 %timeit
指令快速測量代碼運作時間
%timeit
在一個互動式會話中,我們可以使用
%timeit
魔法指令快速測量代碼運作時間。相同的指令會在一個循環中多次執行,多次運作時長的平均值作為該指令的最終評估時長。
-n
選項可以控制指令在單詞循環中執行的次數,
-r
選項控制執行循環的次數。
3.6 使用 %debug
指令進行快速debug
%debug
ipython帶有一個強大的調試器。無論何時控制台抛出了一個異常,我們都可以使用
%debug
魔法指令在異常點啟動調試器。接着你就能調試模式下通路所有的本地變量和整個棧回溯。使用
u
和
d
向上和向下通路棧,使用
q
退出調試器。在調試器中輸入
?
可以檢視所有的可用指令清單。
我們也可以使用
%pdb
魔法指令來激活IPython調試器,這樣,每當異常抛出時,調試器就會自動運作。
3.7 使用Pylab進行互動式計算
%pylab
魔法指令可以使
Numpy
和
matplotlib
中的科學計算功能生效,這些功能被稱為基于向量和矩陣的高效操作,互動可視化特性。它能夠讓我們在控制台進行互動式計算和動态繪圖。
在該示例中,我們首先定義了一個-10到10的線性空間中的1000個數值的向量,接着我們繪制了(x,sin(x))圖像,這樣我們就成功繪制出了
sin(x)
的函數圖像:
3.8 在IPython中使用系統shell
我們可以在IPython中直接使用系統shell,并擷取讀取結果作為一個Python字元串清單。為了實作這種功能,我們需要使用感歎号
!
作為shell指令的字首。比如現在在我的windows系統中,直接在IPython中ping百度:
一個有趣的事情是,在IPython中調用系統shell可以再次進入一個新的IPython shell中,如下:
當然,一般沒人會這麼幹。
4.使用IPython Notebook
IPython Notebook使用浏覽器作為界面,向背景的IPython伺服器發送請求,并顯示結果。在浏覽器的界面中使用單元(Cell)儲存各種資訊。Cell有多種類型,需要強調的是,它也支援MarkDown文法,是以可以有MarkDown格式化文本單元,也可以有表示代碼的Code單元。
IPython Notebook有一個重要的特點就是:可重複性的互動計算,這意味着我們可以重複更改并且執行曾經的輸入記錄。它可以儲存成其他很多格式,比如Python腳本,HTML,PDF等,是以它可以記錄我們的演算過程。很多課程,部落格以及書籍都是用Notebook寫的。
4.1 安裝并運作
如果執行了上文中IPython的安裝過程,IPython Notebook已經算是安裝好了。怎麼測試呢?
Win + R
打開運作視窗,輸入
ipython notebook
,如果正确安裝的話,這個指令就會預設在本地8888端口啟動一個web服務,并自動打開浏覽器,打開
http://localhost:8888/tree
頁面,在這個頁面我們可以看到目前目錄下的所有檔案夾以及
ipynb
檔案。
當然,如果不想在目前預設目錄啟動該Web伺服器的話,就在cmd視窗下切換目錄之後再運作
ipython notebook
:
自動打開如下頁面:
我們可以點選目前目錄下的Notebook檔案進行編輯,也可以建立Notebook:
編輯Notebook可以選擇代碼模式和文本編輯模式,也可以導出各種不同格式的檔案:
由于IPython Notebook是基于Web服務模式的,是以我們可以在遠端伺服器打開IPython伺服器,在本地用戶端啟動IPython Web互動界面,這樣可以很友善地操作遠端資料
4.2 操作
在一個輸入框即Cell中使用回車即
Enter
鍵,表示換行,也就是說一個Cell中可以輸入多條語句。
一個Cell中的指令可以由兩種方式運作:
小格内的所有代碼将會在目前的IPython互動命名空間中運作,運作結果将會立即在輸入框下面的輸出區域顯示,且一個新的輸入框會出現。
Shift + Enter
組合鍵隻會顯示運作結果而不會建立新的輸入框
Ctrl + Enter
我們也可以使用上面的菜單欄和工具欄對Cell進行各種增删複制粘貼等操作。