天天看點

IPython介紹

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      
  • 1

這條指令會自動安裝IPython以及它的各種依賴包

如果我們也想在notebook中或者在Qt console中使用IPython,我們還需要安裝Jupyter,如下指令:

pip install jupyter      
  • 1

另外我們還可能需要安裝一些用到的庫:

NumPy高性能多元數組矢量運算庫:

pip install numpy      
  • 1

Matplotlib繪圖以及互動式可視化:

pip install matplotlib      
  • 1

等等。

3. 互動式使用IPython

IPython支援所有python的标準輸入輸出,也就是我們在IDLE中或者Python shell中能用的,在IPython中都能夠使用,唯一的不同之處使ipython會使用​

​In [x]​

​​和​

​Out [x]​

​表示輸入輸出,并表示出相應的序号。

其實後面我們會知道,In和Out是兩個儲存曆史資訊的變量

進入IPython也非常簡單,直接​

​win + R​

​​打開運作,然後輸入​

​ipython​

​即可進入IPython shell互動框;

IPython介紹
IPython介紹

或者輸入​

​ipython qtconsole​

​進入ipython圖形互動界面:

IPython介紹
IPython介紹

除此之外,ipython支援一些更進階的功能。

3.1 Tab鍵自動補全

在shell中輸入表達式時,隻要按下Tab鍵,目前命名空間中任何與輸入的字元串相比對的變量(對象或者函數等)就會被找出來:

IPython介紹

這時可以通過鍵盤的向下翻頁鍵找到自己需要的對象。

3.2 内省

在變量的前面或者後面加上一個問号​

​?​

​,就可以将有關該對象的一些通用資訊顯示出來,這就叫做對象的内省。

IPython介紹

如果對象是一個函數或者執行個體方法,則它的docstring也會被顯示出來:

定義方法如下:

IPython介紹

這時檢視該方法的内省資訊:

IPython介紹

如果使用兩個問号​

​??​

​,那麼還可以顯示出該方法的源代碼:

IPython介紹

另外,我們可以使用通配符字元串查找出所有與該通配符字元串相比對的名稱,比如我們查找​

​re​

​​子產品下所有的包含​

​find​

​的函數:

IPython介紹

3.3 使用曆史指令history

在IPython shell中,使用曆史指令可以簡單地使用上下翻頁鍵即可,另外我們也可以使用​

​hist​

​​指令(或者​

​history​

​​指令)檢視所有的曆史輸入。(正确的做法是使用​

​%hist​

​​,在這裡,​

​%hist​

​也是一個魔法指令)

IPython介紹

如果在​

​hist​

​​指令之後加上​

​-n​

​​,即​

​hist -n​

​也可以顯示出輸入的序号:

IPython介紹

在任何的互動會話中,我們的輸入曆史和輸出曆史都會被儲存在​

​In​

​​和​

​Out​

​變量中,并被序号進行索引。

另外,​

​_​

​​,​

​__​

​​,​

​___​

​​和​

​_i​

​​,​

​_ii​

​​,​

​_iii​

​​變量儲存着最後三個輸出和輸入對象。​

​_n​

​​和​

​_in​

​(這裡的n表示具體的數字)變量傳回第n個輸出和輸入的曆史指令。比如:

IPython介紹

3.4 使用​%run​指令運作腳本

在ipython會話環境中,所有檔案都可以通過​

​%run​

​​指令當做Python程式來運作,輸入​

​%run 路徑+python檔案名稱即可​

3.5 使用​%timeit​指令快速測量代碼運作時間

在一個互動式會話中,我們可以使用​

​%timeit​

​​魔法指令快速測量代碼運作時間。相同的指令會在一個循環中多次執行,多次運作時長的平均值作為該指令的最終評估時長。​

​-n​

​​ 選項可以控制指令在單詞循環中執行的次數,​

​-r​

​選項控制執行循環的次數。

IPython介紹

3.6 使用​%debug​指令進行快速debug

ipython帶有一個強大的調試器。無論何時控制台抛出了一個異常,我們都可以使用​

​%debug​

​​魔法指令在異常點啟動調試器。接着你就能調試模式下通路所有的本地變量和整個棧回溯。使用​

​u​

​​和​

​d​

​​向上和向下通路棧,使用​

​q​

​​退出調試器。在調試器中輸入​

​?​

​可以檢視所有的可用指令清單。

我們也可以使用​

​%pdb​

​魔法指令來激活IPython調試器,這樣,每當異常抛出時,調試器就會自動運作。

3.7 使用Pylab進行互動式計算

​%pylab​

​​魔法指令可以使​

​Numpy​

​​和​

​matplotlib​

​中的科學計算功能生效,這些功能被稱為基于向量和矩陣的高效操作,互動可視化特性。它能夠讓我們在控制台進行互動式計算和動态繪圖。

IPython介紹

在該示例中,我們首先定義了一個-10到10的線性空間中的1000個數值的向量,接着我們繪制了(x,sin(x))圖像,這樣我們就成功繪制出了​

​sin(x)​

​的函數圖像:

IPython介紹

3.8 在IPython中使用系統shell

我們可以在IPython中直接使用系統shell,并擷取讀取結果作為一個Python字元串清單。為了實作這種功能,我們需要使用感歎号​

​!​

​作為shell指令的字首。比如現在在我的windows系統中,直接在IPython中ping百度:

IPython介紹

一個有趣的事情是,在IPython中調用系統shell可以再次進入一個新的IPython shell中,如下:

IPython介紹

當然,一般沒人會這麼幹。

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​

​:

IPython介紹

自動打開如下頁面:

IPython介紹

我們可以點選目前目錄下的Notebook檔案進行編輯,也可以建立Notebook:

IPython介紹

編輯Notebook可以選擇代碼模式和文本編輯模式,也可以導出各種不同格式的檔案:

IPython介紹

由于IPython Notebook是基于Web服務模式的,是以我們可以在遠端伺服器打開IPython伺服器,在本地用戶端啟動IPython Web互動界面,這樣可以很友善地操作遠端資料

4.2 操作

在一個輸入框即Cell中使用回車即​

​Enter​

​鍵,表示換行,也就是說一個Cell中可以輸入多條語句。

  1. ​Shift + Enter​

    ​小格内的所有代碼将會在目前的IPython互動命名空間中運作,運作結果将會立即在輸入框下面的輸出區域顯示,且一個新的輸入框會出現。
  2. ​Ctrl + Enter​

    ​組合鍵隻會顯示運作結果而不會建立新的輸入框