文章

Python unittest 模組教學 part 1

本文是 Python unittest 模組的教學: Python unittest 模組教學 Part 1 Python unittest 模組教學 Part 2 本篇談談 Python 的 unittest 模組。 顧名思義, unittest 就是專門做單元測試(unit test)的模組。 從 Python 2.1 開

Last updated on  Mar 20, 2023  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

隨手養成 Python 好習慣-勤註解、善用自動文件產生工具 Sphinx

不管是何種程式語言都有註解的需求,而好的程式開發人員都必須具備勤寫註解的美德。

寫註解不僅是為了幫助自己了解程式的相關細節,也是為了能夠讓他人方便於一起參與開發、維護的重要步驟。

正因為現今的系統架構越來越繁雜,而開發人員的大腦記憶能力有限,當他們持續在開發新功能的同時,其實就已經在慢慢淡忘舊功能的實作細節。

特別是每當發現舊功能需要進行維護與除錯時,往往已經過一段時日,開發人員所存的印象早就所剩無幾,更遑論能夠迅速達成維護與除錯的目標。這些現象在程式開發過程屢見不鮮,因此養成撰寫註解的習慣格外重要。

而每個組織對於註解的規定有所不同,但若是對於初學 Python 程式的新進入者而言,可以參考 Google Python Style Guide 對於註解的規範的章節(連結)。

此外,除了註解,通常文件(documentation)也是必備的產出之一,這些細節都可在 GitHub 上的知名專案可見一斑(如 Django , D3 等)。 但基於 DRY(Don’t Repeat Yourself) 原則,我們希望可以在撰寫註解的同時,也一併完成文件的撰寫(相信有許多程式設計師厭惡撰寫文件),因此本文將介紹如何利用 Sphinx 將 Python 中的註解自動萃取出來,並且自動地產生一份文件供人參考。

Last updated on  Jan 11, 2021  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 4 min read

隨手養成 Python 好習慣-簡單導入 logging 模組

如果說最方便且偷懶的對程式進行除錯訊息的記錄是 print() 的話,那麼我的建議是-「如果你正在使用最方便且偷懶的方法,而且知道這種方式不好的話,那麼請花費一點點時間看完這篇文章;如果你早已經像喝水一樣自然地使用 logging 模組的話,可以不需要在閱讀此篇文章」

Posted on  Sep 9, 2016  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 2 min read

Python datetime 常用方法統整

Python 內建有不少時間相關的操作函數,本篇將如何取得日期區間記錄成 Python recipes ,以供方便使用。

這些方法主要使用 timedelta 進行時間加減、 calendar 取得月份天數以及其他 datetime 模組所提供之函數組合而成。

Posted on  Sep 8, 2016  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 1 min read

Python 淺談 with 語句

在我們談到 with 語句時,就不得不先提到所謂的 Context Manager ,有人翻譯成上下文管理器,但我覺得稱為情境管理即可,簡單來講就是希望規範一個物件在進入與離開 with 語句所創造的情境範圍內時能夠自動進行一些動作,打個比方就是進入浴室洗澡要脫衣服,洗完澡離開浴室要穿衣服,在這個比喻中浴室洗澡就是情境(Context),脫穿衣服就是進入與離開這個情境下會需要進行的動作。

又或者程式設計師經常開完檔之後忘記關檔,所以我們會希望在 with 語句中進行讀檔的處理,並且讓程式執行離開 with 語句的範圍時,自動進行關檔,以免除一些繁瑣的動作,避免類似忘記關檔的事情發生。

Posted on  Sep 6, 2016  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 2 min read

隨手養成 Python 好習慣 ─ 開檔、讀檔

很多時候為撰寫速度與方便的結果,我們經常會把檔案開啟之後,就忘記關閉它。小小程式也許並不會讓人在意,但是當我們正在開發大型應用程式時,這樣的壞習慣經常會帶來無法預期的結果。

例如以下的 Python 片段就是一個不好的例子,因為它並沒有進行關檔的善後處理:

for line in open("file.txt"):
    print line

Posted on  Sep 5, 2016  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 2 min read