版權聲明

所有的部落格文章都可以在右邊[blog文章原始檔案]下載最原始的文字檔案,並依你高興使用 docutil 工具轉換成任何對應的格式方便離線閱覽,除了集結成書販賣歡迎任意取用,引用

IPython note (2)

IPython note (2)

第一集連結

http://psvsps2.blogspot.com/2009/05/ipython-study-note-1_25.html

doctest mode

doctest 是一個很棒的測試module,結合測試和說明加上直譯器驗證,想再Ipython 裡面產生 doctest 可以接受的測試程式碼,可以輸入 %doctest_mode

In [180]: %doctest_mode
*** Pasting of code with ">>>" or "..." has been enabled.
Exception reporting mode: Plain
Doctest mode is: ON
>>>

Input Cache System

IPython 會保存使用者的輸入和輸出資料 In/Out 簡單查看 In 和 Out 這兩個 list 就可了解他是幹嘛的了。

Input Cache 有定義一些 global object 請參考下面:

  1. _i : 上一個輸入
  2. _ii : 上上個輸入
  3. _i14 : In[14]
  4. %hist

_i 系列可以自由當成一般變數使用,比如拿來當字串列印:

In [145]: print ' [ '+_i142 + ' ] '
 [ _ip.magic("hist -g .*m1")
 ]

Exception

Python 丟出的exception因為會把整個進入function的堆疊依順序全部丟 出來,老實說就是丟了一大堆廢話,這點在IPython就有很明顯的改善, IPython不會丟出一推繁瑣的函式間的堆疊關係,除此之外還可以透過magic function xmode來設定exception的輸出。

xmode
設定Exception的輸出,有三種模式可以選擇分別是plain,verbose 和context,簡單來說plain呈現的資訊最少,context次之,verbose 最多,建議使用context比較能清楚了解exception發生地點的上下文關 係。

Debug

IPython 對於Debug也有一些方便的支援,沒有使用IPython的時候想要debug 程式,要在souce裡面加入pdb的code來執行pdb,如下例所示:

import pdb
a = 'message A'
pdb.set_trace()
# ...

IPython就不用這麼麻煩了,首先他有一個好用的magic function -> %pdb ,這個magic function可以打開/關閉IPython的automatic pdb功能,如果 automatic pdb = on,在exception丟出時候會自動執行pdb。

此外還可以配合%run -d來進入debug模式:

In [61]: run -d epdb1.py
Breakpoint 1 at /Users/janaustin/Code/python/epdb1.py:1
NOTE: Enter 'c' at the ipdb>  prompt to start your script.
> <string>(1)<module>()

ipdb> l

ipdb> n
> /Users/janaustin/Code/python/epdb1.py(1)<module>()
1---> 1 a='aaa'
      2 b='bbb'
      3 c='ccc'

Paste

在Note (1)有提到IPython可以透過%edit開啟外部編輯器來幫助輸入code, 可是寫程式除了用手慢慢打,剪下貼上也是十分常用的技能,IPython如果要貼上 程式片段,必須先下指令%cpaste進入剪貼模式,貼完後輸入'--'離開剪貼模式。

評估程式

有時候想要對程式的效率進行評估,IPython也貼新的提供可用的功能。

%time

計算執行的時間。

In [62]: %time sum(range(999999))
CPU times: user 0.27 s, sys: 0.02 s, total: 0.29 s
Wall time: 0.29 s
Out[63]: 499998500001L
%timeit

計算平均執行時間。

In [64]: %timeit sum(range(999999))
10 loops, best of 3: 277 ms per loop

macro

IPython 提供C/C++擁有的macro功能,macro可以

store save

沒有留言:

Related Posts with Thumbnails