【python】ipython與python的區(qū)別

【python】ipython與python的區(qū)別

http://mba.shengwushibie.com/itbook/BookChapter.asp?id=8745

http://www.cnblogs.com/yangze/archive/2011/07/11/2103040.html

http://matrix.42qu.com/10735149

http://www.cnblogs.com/weishun/p/great-ipython.html

IPython的開發(fā)者吸收了標準解釋器的基本概念,在此基礎上進行了大量的改進,創(chuàng)造出一個令人驚奇的工具。在它的主頁上是這么說的:“這是一個增強的交互式Python

shell?!本哂衪ab補全,對象自省,強大的歷史機制,內嵌的源代碼編輯,集成Python調試器,%run機制,宏,創(chuàng)建多個環(huán)境以及調用系統(tǒng)shell的能力。

1)IPython與標準Python的最大區(qū)別在于,Ipython會對命令提示符的每一行進行編號。如下圖:

對比兩個例子,其輸出變量值似乎相同,其實仍有差別。print語句使用非正式的(unofficial)字符串表達式,而簡單變量名(bare

variable

name)使用了正式的(official)字符串表達式。在處理自定義類而不是內置類時,這種差異會體現(xiàn)得非常明顯。

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)斷點調試:如果你的程序是由命令行開始執(zhí)行的,即在命令行下輸入 python foo.py(大部分

Python 程序都是),那么你還可以利用 IPython 在你的程序任意地方進行斷點調試。

在你程序中任意地方,加入如下語句:

from IPython.Shell import

IPShellEmbed

IPShellEmbed([])()

注意:最近 IPython 發(fā)布了 0.11

版本,各方面變化都非常大,API 也經(jīng)過了重新設計。如果你使用的是 0.11 那么上面兩行對應的是這樣的:

from IPython import

embed

embed()

再和平常一樣運行你的程序,你會發(fā)現(xiàn)在程序運行到插入語句的地方時,會轉到 IPython

環(huán)境下。你可以試試運行些指令,就會發(fā)現(xiàn)此刻 IPython

的環(huán)境就是在程序的那個位置。你可以逐個瀏覽當前狀態(tài)下的各個變量,調用各種函數(shù),輸出你感興趣的值來幫助調試。之后你可以照常退出

IPython,然后程序會繼續(xù)運行下去,自然地你在當時 IPython 下執(zhí)行的語句也會對程序接下來的運行造成影響。

這個方法是在這里(http://lukeplant.me.uk/blog/posts/exploratory-programming-with-ipython/)看到的。想象一下,這樣做就像讓高速運轉的程序暫停下來,你再對運行中的程序進行檢查和修改,之后再讓他繼續(xù)運行下去。這里舉一個例子,比如編寫網(wǎng)頁

bot

,你在每取回一個頁面后你都得看看它的內容,再嘗試如何處理他獲得下一個頁面的地址。運用這個技巧,你可以在取回頁面后讓程序中斷,再那里實驗各種處理方法,在找到正確的處理方式后寫回到你的代碼中,再進行下一步。這種工作流程只有像

Python 這種動態(tài)語言才可以做到。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容