Source From Here
Preface
一但習慣某個東西的好處後, 久了就會忘了它的重要性。今天重操舊業寫了久違的 python, 覺得能用 python 寫程式已很爽了, 還能用 ipython 寫 python, 更是爽上加爽!特此記錄一下, 分享給還未試過的人。底下是 iPython 的簡介:
IPython provides a rich architecture for interactive computing with:
ipython 是 python 的互動式 shell, 功能相當強大, 而且預設設定就相當好用。如今 ipython 已發展到 令人難以想像的地步, 以下只是基本的使用情境。
試用別人的模組
如果還沒有安裝 ipython, 可以使用 pip install ipython 進行安裝:
如果你使用 os.path.join?? 則可以帶出該函數的代碼:
有了 <TAB>、? 和 ?? 後, 不太需要從外部找參考手冊, 直接在 ipython 裡試比較快.
開發片段小程式
試了一些片段小程式, 了解怎麼使用別人的模組後, 再來會想拼湊一些小程式。這時可用 edit 進入編輯器 (會選用環境變數 EDITOR 設的值):
在第一行按 edit 後, 畫面會切到編輯器, 寫好內容存檔離開後, ipython 會載入剛才打的內容到 ipython 裡, 也就是第一行輸出 'class Rect(object):\n def __init__ ...' 那一串。這裡我定義了 class Rect, 然後試一下 Rect 看看有沒有寫錯。接著第五行 edit -p 表示回去編輯上一次的內容, 執行後一樣會進入編輯器, 不過內容會先有上一次打過的東西。這回我多補了 area() 函式, 於是新增的 Rect 物件就有這函式了。
拼湊差不多後, 可用 edit -p 取得內容, 另外存到檔案, 或是打 hist 看打過的內容, 手動剪貼到檔案裡。
開發完整程式
想法明確時, 直接用編輯器編寫, 再輔以 ipython 測試更有效率。首先, 終端機A的編輯器畫面如下所示, 寫了一個階乘函數:
然後在終端機B的 ipython 測試:
第二行測完發覺結果不對, 於是回終端機 A 修改, 將 range(n) 改為 range(1, n + 1), 再回來終端機 B 執行 reload(foo) 重新載入 foo。接著第四行重測就得到正確的結果了。 當然, 發覺結果不對時, 也可以在 ipython 測測 range() 的用法, 或用 range? 看看說明, 很快就會找到答案。
Supplement
* Introducing IPython
Preface
一但習慣某個東西的好處後, 久了就會忘了它的重要性。今天重操舊業寫了久違的 python, 覺得能用 python 寫程式已很爽了, 還能用 ipython 寫 python, 更是爽上加爽!特此記錄一下, 分享給還未試過的人。底下是 iPython 的簡介:
IPython provides a rich architecture for interactive computing with:
ipython 是 python 的互動式 shell, 功能相當強大, 而且預設設定就相當好用。如今 ipython 已發展到 令人難以想像的地步, 以下只是基本的使用情境。
試用別人的模組
如果還沒有安裝 ipython, 可以使用 pip install ipython 進行安裝:
如果你使用 os.path.join?? 則可以帶出該函數的代碼:
有了 <TAB>、? 和 ?? 後, 不太需要從外部找參考手冊, 直接在 ipython 裡試比較快.
開發片段小程式
試了一些片段小程式, 了解怎麼使用別人的模組後, 再來會想拼湊一些小程式。這時可用 edit 進入編輯器 (會選用環境變數 EDITOR 設的值):
在第一行按 edit 後, 畫面會切到編輯器, 寫好內容存檔離開後, ipython 會載入剛才打的內容到 ipython 裡, 也就是第一行輸出 'class Rect(object):\n def __init__ ...' 那一串。這裡我定義了 class Rect, 然後試一下 Rect 看看有沒有寫錯。接著第五行 edit -p 表示回去編輯上一次的內容, 執行後一樣會進入編輯器, 不過內容會先有上一次打過的東西。這回我多補了 area() 函式, 於是新增的 Rect 物件就有這函式了。
拼湊差不多後, 可用 edit -p 取得內容, 另外存到檔案, 或是打 hist 看打過的內容, 手動剪貼到檔案裡。
開發完整程式
想法明確時, 直接用編輯器編寫, 再輔以 ipython 測試更有效率。首先, 終端機A的編輯器畫面如下所示, 寫了一個階乘函數:
- # foo.py
- def factorial(n):
- s = 1
- for i in range(n):
- s *= i
- return s
第二行測完發覺結果不對, 於是回終端機 A 修改, 將 range(n) 改為 range(1, n + 1), 再回來終端機 B 執行 reload(foo) 重新載入 foo。接著第四行重測就得到正確的結果了。 當然, 發覺結果不對時, 也可以在 ipython 測測 range() 的用法, 或用 range? 看看說明, 很快就會找到答案。
Supplement
* Introducing IPython
沒有留言:
張貼留言