02. IPython 的安裝及使用

1. IPython 的介紹

Ipython 是一個(gè) python 的交互式 shell,比默認(rèn)的 python shell 好用得多,支持變量自動(dòng)補(bǔ)全,自動(dòng)縮進(jìn),支持 bash shell 命令,內(nèi)置了許多很有用的功能和函數(shù)。學(xué)習(xí)Ipython 將會(huì)讓我們以一種更高的效率來使用 python。同時(shí)它也是利用 Python 進(jìn)行科學(xué)計(jì)算和交互可視化的一個(gè)最佳的平臺(tái)。

IPython 提供了兩個(gè)主要的組件:
  1. 一個(gè)強(qiáng)大的 python 交互式 shell;
  2. 供 Jupyter notebooks 使用的一個(gè) Jupyter 內(nèi)核(IPython notebook)。
IPython 的主要功能如下:
  1. 運(yùn)行 ipython 控制臺(tái) ;
  2. 使用 ipython 作為系統(tǒng) shell ;
  3. 使用歷史輸入(history) ;
  4. Tab 鍵自動(dòng)補(bǔ)全 ;
  5. 使用%run命令運(yùn)行腳本 ;
  6. 使用%timeit命令快速測(cè)量時(shí)間 ;
  7. 使用%pdb命令快速 debug ;
  8. 使用%edit命令打開當(dāng)前函數(shù)編輯;
  9. 使用%save命令把某些歷史記錄保存到文件;
  10. 使用%debug命令激活debug程序;
  11. 使用 pylab 進(jìn)行交互計(jì)算 ;
  12. 使用 IPython Notebook。

2. IPython 的安裝

Ipython 支持 Python2.7 版本或者3.3 以上的版本,此處用的是 windows 下的 python 3.7.9 版本。

  1. 安裝 ipython 很簡(jiǎn)單,可以直接使用 pip 管理工具即可:
pip install ipython    # 這條命令會(huì)自動(dòng)安裝IPython以及它的各種依賴包
安裝 ipython
  1. 如果還想在 notebook 中或者在 Qt console 中使用 IPython,我們還需要安裝 Jupyter,如下命令:
pip install jupyter
安裝 jupyter
  1. 另外還可能需要安裝一些用到的庫(kù):
  • NumPy 高性能多維數(shù)組矢量運(yùn)算庫(kù):
pip install numpy
安裝 numpy
  • Matplotlib 繪圖以及交互式可視化:
pip install matplotlib
安裝 matplotlib

3. IPython 的交互式使用

IPython 支持所有 python 的標(biāo)準(zhǔn)輸入輸出,也就是我們?cè)?IDLE 中或者 Python shell 中能用的,在 IPython 中都能夠使用,唯一的不同之處使 ipython 會(huì)使用 In [x]Out [x] 表示輸入輸出,并表示出相應(yīng)的序號(hào)。后面我們會(huì)知道,InOut 是兩個(gè)保存歷史信息的變量。

進(jìn)入 IPython 也非常簡(jiǎn)單,直接 win + R 打開運(yùn)行,然后輸入ipython 即可進(jìn)入 IPython shell 交互框。

進(jìn)入 ipython 交互框

3.1 Tab 鍵自動(dòng)補(bǔ)全

在 shell 中輸入表達(dá)式時(shí),只要按下 Tab 鍵,當(dāng)前命名空間中任何與輸入的字符串相匹配的變量(對(duì)象或者函數(shù)等)就提示出來,這時(shí)可以通過鍵盤的向下翻頁鍵找到自己需要的對(duì)象。

Tab鍵自動(dòng)補(bǔ)全

3.2 內(nèi)省

在變量的前面或者后面加上一個(gè)問號(hào) ?,就可以將有關(guān)該對(duì)象的一些通用信息顯示出來,這就叫做對(duì)象的內(nèi)省。

內(nèi)省

如果對(duì)象是一個(gè)函數(shù)或者實(shí)例方法,則它的 docstring 也會(huì)被顯示出來,定義方法如下:

定義方法

查看該方法的內(nèi)省信息:

查看方法的內(nèi)省信息

如果使用兩個(gè)問號(hào) ??,還可以顯示出該方法的源代碼:

查看方法的內(nèi)省信息

此外,可以使用通配符字符串查找出所有與該通配符字符串相匹配的名稱,比如查找 re 模塊下所有的包含find的函數(shù):

使用通配符字符串查找

3.3 使用歷史命令 history

在 IPython shell 中,使用歷史命令可以簡(jiǎn)單地使用上下翻頁鍵即可,也可以使用hist命令(或者history命令)查看所有的歷史輸入。(正確的做法是使用%hist,在這里,%hist也是一個(gè)魔法命令)

使用歷史命令

如果在hist命令之后加上-n,即hist -n也可以顯示出輸入的序號(hào):

使用歷史命令

在任何的交互會(huì)話中,輸入歷史和輸出歷史都會(huì)被保存在InOut變量中,并被序號(hào)進(jìn)行索引。
另外,_,__,____i_ii,_iii變量保存著最后三個(gè)輸出和輸入對(duì)象。_n_in(這里的n表示具體的數(shù)字)變量返回第n個(gè)輸出結(jié)果和輸入內(nèi)容的歷史命令。
比如:_3輸出第3條語句的輸出結(jié)果,_i3輸出第3條語句的內(nèi)容。

In 和 Out 變量

3.4 使用 %run 命令運(yùn)行腳本

在 ipython 會(huì)話環(huán)境中,所有文件都可以通過%run命令當(dāng)做 Python 程序來運(yùn)行,輸入%run 路徑+python文件名稱即可

3.5 使用 %timeit 命令快速測(cè)量代碼運(yùn)行時(shí)間

在一個(gè)交互式會(huì)話中,可以使用%timeit魔法命令快速測(cè)量代碼運(yùn)行時(shí)間。相同的命令會(huì)在一個(gè)循環(huán)中多次執(zhí)行,多次運(yùn)行時(shí)長(zhǎng)的平均值作為該命令的最終評(píng)估時(shí)長(zhǎng)。-n 選項(xiàng)可以控制命令在單詞循環(huán)中執(zhí)行的次數(shù),-r選項(xiàng)控制執(zhí)行循環(huán)的次數(shù)。

快速測(cè)量代碼運(yùn)行時(shí)間

3.6 使用 %debug 命令進(jìn)行快速 debug

ipython 帶有一個(gè)強(qiáng)大的調(diào)試器。無論何時(shí)控制臺(tái)拋出了一個(gè)異常,我們都可以使用%debug魔法命令在異常點(diǎn)啟動(dòng)調(diào)試器。接著你就能調(diào)試模式下訪問所有的本地變量和整個(gè)?;厮荨J褂?code>u和d向上和向下訪問棧,使用q退出調(diào)試器。在調(diào)試器中輸入?可以查看所有的可用命令列表??梢允褂?code>%pdb魔法命令來激活I(lǐng)Python調(diào)試器,這樣,每當(dāng)異常拋出時(shí),調(diào)試器就會(huì)自動(dòng)運(yùn)行。

3.7 使用 Pylab 進(jìn)行交互式計(jì)算

%pylab魔法命令可以使Numpymatplotlib中的科學(xué)計(jì)算功能生效,這些功能被稱為基于向量和矩陣的高效操作,交互可視化特性。它能夠讓我們?cè)诳刂婆_(tái)進(jìn)行交互式計(jì)算和動(dòng)態(tài)繪圖。

使用 Pylab 進(jìn)行交互式計(jì)算

在該示例中,我們首先定義了一個(gè) -1010 的線性空間中的 1000 個(gè)數(shù)值的向量,接著繪制 (x,sin(x)) 圖像,這樣我們就成功繪制出了sin(x)的函數(shù)圖像:

sin(x)的函數(shù)圖像

3.8 在 IPython 中使用系統(tǒng) shell

我們可以在 IPython 中直接使用系統(tǒng) shell,并獲取讀取結(jié)果作為一個(gè) Python 字符串列表。為了實(shí)現(xiàn)這種功能,需要使用感嘆號(hào) ! 作為 shell 命令的前綴。比如現(xiàn)在在我的 windows 系統(tǒng)中,直接在 IPython 中ping 百度:

ping 百度

此外,在 IPython 中調(diào)用系統(tǒng) shell 可以再次進(jìn)入一個(gè)新的 IPython shell 中。

進(jìn)入一個(gè)新的 IPython shell 中

4. 使用 IPython Notebook

IPython Notebook 使用瀏覽器作為界面,向后臺(tái)的 IPython 服務(wù)器發(fā)送請(qǐng)求,并顯示結(jié)果。在瀏覽器的界面中使用單元(Cell)保存各種信息。Cell 有多種類型,需要強(qiáng)調(diào)的是,它也支持 MarkDown 語法,所以可以有 MarkDown 格式化文本單元,也可以有表示代碼的 Code 單元。

IPython Notebook 有一個(gè)重要的特點(diǎn)就是:可重復(fù)性的互動(dòng)計(jì)算,這意味著我們可以重復(fù)更改并且執(zhí)行曾經(jīng)的輸入記錄。它可以保存成其他很多格式,比如 Python腳本,HTML,PDF 等,所以它可以記錄我們的演算過程。很多課程,博客以及書籍都是用 Notebook 寫的。

4.1 安裝并運(yùn)行

前面 IPython 的安裝過程如果你都已經(jīng)執(zhí)行過了,那么 IPython Notebook 就算是安裝好了。至于怎么測(cè)試呢?
Win + R打開運(yùn)行窗口,輸入ipython notebook,如果正確安裝的話,這個(gè)命令就會(huì)默認(rèn)在本地 8888 端口啟動(dòng)一個(gè) web 服務(wù),并自動(dòng)打開瀏覽器,打開http://localhost:8888/tree頁面,在這個(gè)頁面我們可以看到當(dāng)前目錄下的所有文件夾以及ipynb文件。當(dāng)然,如果不想在當(dāng)前默認(rèn)目錄啟動(dòng)該Web服務(wù)器的話,就在 cmd 窗口下切換目錄之后再運(yùn)行ipython notebook

打開 ipython notebook

自動(dòng)打開,如下頁面:

網(wǎng)頁 jupyter

我們可以點(diǎn)擊當(dāng)前目錄下的 Notebook 文件進(jìn)行編輯,也可以新建 Notebook。

使用 notebook

編輯 Notebook 可以選擇代碼模式文本編輯模式,也可以導(dǎo)出各種不同格式的文件。

編寫代碼運(yùn)行

由于 IPython Notebook 是基于 Web 服務(wù)模式的,所以我們可以在遠(yuǎn)程服務(wù)器打開 IPython 服務(wù)器,在本地客戶端啟動(dòng) IPython Web 交互界面,這樣可以很方便地操作遠(yuǎn)程數(shù)據(jù)。

4.2 操作

在一個(gè)輸入框即Cell中使用回車即Enter鍵,表示換行,也就是說一個(gè)Cell中可以輸入多條語句。
一個(gè)Cell中的命令可以由兩種方式運(yùn)行:

  1. Shift + Enter小格內(nèi)的所有代碼將會(huì)在當(dāng)前的 IPython 交互命名空間中運(yùn)行,運(yùn)行結(jié)果將會(huì)立即在輸入框下面的輸出區(qū)域顯示,且一個(gè)新的輸入框會(huì)出現(xiàn)。
  2. Ctrl + Enter組合鍵只會(huì)顯示運(yùn)行結(jié)果而不會(huì)創(chuàng)建新的輸入框。

也可以使用上面的菜單欄和工具欄對(duì)Cell進(jìn)行各種增刪復(fù)制粘貼等操作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容