ipython的開發者吸收了標準直譯器的基本概念,在此基礎上進行了大量的改進,創造出乙個令人驚奇的工具。在它的主頁上是這麼說的:「這是乙個增強的互動式python shell。」具有tab補全,物件自省,強大的歷史機制,內嵌的源**編輯,整合python偵錯程式,%run機制,巨集,建立多個環境以及呼叫系統shell的能力。
1)ipython與標準python的最大區別在於,ipython會對命令提示符的每一行進行編號。如下圖:
對比兩個例子,其輸出變數值似乎相同,其實仍有差別。print語句使用非正式的(unofficial)字串表示式,而簡單變數名(bare variable name)使用了正式的(official)字串表示式。在處理自定義類而不是內建類時,這種差異會體現得非常明顯。
in [10]: class doublerep(object):
....: def __str__(self):
....: return 'hi, i'm a __str__'
....: def __repr__(self):
....: return 'hi, i'm a __repr__'
....:
....:
in [11]: dr = doublerep()
in [12]: print dr
hi, i'm a __str__
in [13]: dr
out[13]: hi, i'm a __repr__
2)tab補全
作為例子,我們先引入 sys 模組,之後再輸入 sys. (注意有個點),此時按下 tab 鍵,ipython 會列出所有 sys
模組下的方法和屬性。
接著上面的例子,我們輸入 sys?再回車,這樣會顯示出 sys 模組的 docstring及相關資訊。很多時候這個也是很方便的功能。
3)歷史機制
hist可以快速檢視那些輸入的歷史記錄。
hist -n可以快速檢視並去掉歷史記錄中的序號,這樣你就可以方便的將**複製到乙個文字編輯器中。
乙個更簡單的方法是edit加python列表的切片(slice)語法:
edit 4:7 % 將第4,5,6,7句**匯出到編輯器
4)斷點除錯:如果你的程式是由命令列開始執行的,即在命令列下輸入 python foo.py(大部分 python 程式都是),那麼你還可以利用 ipython 在你的程式任意地方進行斷點除錯。
在你程式中任意地方,加入如下語句:
from ipython.shell import ipshellembed
ipshellembed()()
注意:最近 ipython 發布了 0.11 版本,各方面變化都非常大,api 也經過了重新設計。如果你使用的是 0.11 那麼上面兩行對應的是這樣的:
from ipython import embed
embed()
再和平常一樣執行你的程式,你會發現在程式執行到插入語句的地方時,會轉到 ipython 環境下。你可以試試執行些指令,就會發現此刻 ipython 的環境就是在程式的那個位置。你可以逐個瀏覽當前狀態下的各個變數,呼叫各種函式,輸出你感興趣的值來幫助除錯。之後你可以照常退出 ipython,然後程式會繼續執行下去,自然地你在當時 ipython 下執行的語句也會對程式接下來的執行造成影響。
這個方法是在這裡(看到的。想象一下,這樣做就像讓高速運轉的程式暫停下來,你再對執行中的程式進行檢查和修改,之後再讓他繼續執行下去。這裡舉乙個例子,比如編寫網頁 bot ,你在每取回乙個頁面後你都得看看它的內容,再嘗試如何處理他獲得下乙個頁面的位址。運用這個技巧,你可以在取回頁面後讓程式中斷,再那裡實驗各種處理方 法,在找到正確的處理方式後寫回到你的**中,再進行下一步。這種工作流程只有像 python 這種動態語言才可以做到。
ipython與python的區別
ipython的開發者吸收了標準直譯器的基本概念,在此基礎上進行了大量的改進,創造出乙個令人驚奇的工具。在它的主頁上是這麼說的 這是乙個增強的互動式pythonshell。具有tab補全,物件自省,強大的歷史機制,內嵌的源 編輯,整合python偵錯程式,run機制,巨集,建立多個環境以及呼叫系統s...
ipython介紹 IPython的介紹與使用
1 ipython簡介 ipython是乙個python的互動式shell,比預設的python shell好用得多,支援變數自動補全,自動縮排,支援bash shell命令,內建了許多很有用的功能和函式。學習ipython將會讓我們以一種更高的效率來使用python。同時它也是利用python進行...
IPython的介紹與使用
ipython是乙個python的互動式shell,比預設的python shell好用得多,支援變數自動補全,自動縮排,支援bash shell命令,內建了許多很有用的功能和函式。學習ipython將會讓我們以一種更高的效率來使用python。同時它也是利用python進行科學計算和互動視覺化的乙...