Python API 開發:善用 Enum 的三大關鍵特性

from Pixabay

想必你知道 Python 中有一個內建的特殊類別叫 Enum(來自 enum 模組),專門用來處理「列舉」態型的資料集合。

如同 collection 模組中的各種容器(比如:dequeCounter),Enum 已經定義好很多「內建特性(屬性、方法、行為)」供你使用。這些特性會讓你在處理特定情境時非常順手。

但是,這些特性也使得 Enum 類別與一般類別有著很大的差異,增加了學習門檻

如你所見,Enum 的特性頗多,這讓人在學習、使用之前,難免有點望之卻步——至少我是這樣!

本文主旨與架構

本文分享我最近才開始把 Enum 應用在 API 開發中的經驗——從它的三大特性入手,並輔以一個實際問題情境。

Enum 的特性不少,但只要知曉這三件事,就可以在遇到「列舉」欄位時,善用 Enum 來提升開發效率,同時增進程式碼的簡潔與穩健。

不過話說回來,即使不是開發 API,也不影響你對本文的理解。只是我的經驗是從後端開發而來。

本文架構

為了讓你感受 Enum 的強大與美妙,本文的架構經過精心設計。共分為三個部分

  1. 問題情境:我會先提出一個問題情境,突顯舊方法的不足。
  2. 然後再介紹 Enum 的三大特性,帶你進入 Enum 的世界。
  3. 最後看 Enum 特性在問題情境中如何有效發揮,讓程式碼變得更加優雅——也就是它解決的痛點

藉由這個流程,相信你對 Enum 會有更進一步的理解。

27,正式入手《流暢的 Python》第二版

Weekly Review 原則上著眼於「非程式類」內容,而這是一本程式相關的書,所以這期不會討論書中的技術細節,只聊聊我的主觀感受

講它,是因為我對這本書的期待很高,它絕對有這個地位與份量,更別說它真的很厚!(量了一下有 5 公分厚,打算這星期拿去影印店拆成 3 本

趁著清明連假的天瓏日(滿千折百活動),我總算入手了 Python 進階書籍中的口碑之作——《流暢的 Python》,第二版。

還沒有開始讀,但先簡單分享一下我的看法與期待。

26,改用 Buttondown 作為文章訂閱服務

去年 2 月,部落格新增了「email 文章訂閱」功能,採用的方案是免費的 follow.it

它會把我的 RSS 新文章轉成 email,然後寄送給訂閱的讀者。

相關文章:12,blog 新增文章訂閱功能——使用 follow.it

如該篇中所言,「文章訂閱功能」確實是現代部落格的一大需求。

網路上的資訊眾多,我自己作為讀者,也常常感覺被淹沒。遇到一個喜歡的作者,想要追蹤,此時作者是否提供了訂閱功能,就至關重要。

文章訂閱功能,可以由寫作平台提供,比如 Medium、Substack。不然就得自己來,因此我一開始就為 blog 提供了 RSS 訂閱。

但 RSS 畢竟不是一般人常用的資訊接收方式(我自己也不用),它只能滿足小眾人口的需求。所以最終我還是選擇了像 follow.it 這樣的「RSS to email」服務。

《強健的 Python》筆記(一)Type Hints 的成本與挑戰

強健的 Python

這是《強健的 Python|撰寫潔淨且可維護的程式碼》筆記的第 1 篇,你可以把它當作是一則重點整理,加上我個人的開發經驗與心得。

本書翻譯自《Robust Python: Write Clean and Maintainable Code》,原文的副標題容易讓人以為這又是另一本關於「Clean Code in Python」的書。

實際上,本書所聚焦的,是 Python 的一大特性——type hints。全書大半篇幅都圍繞著這個核心主軸。

所以它並非教你「如何寫出 Pythonic 程式碼」的書,而是介紹 type hints 寫法與使用相關工具(比如 Mypy)以確保 type hints 有效落實的作品。

如果你還不熟悉 Python type hints,本文也可以作為認識 type hints 的起點。

25,回歸原點的 Weekly Review

這是第 25 篇的 Weekly Review,距離上一期已經非常久了!

我覺得,顯然的,我把整個 Weekly Review 寫「」了,失去了它原本的味道。

雖然我曾在第十期〈10,Weekly Review 寫滿 10 回:我的心得與改進〉確立了一些想法。但也就是這些想法,讓整個系列走向愈來愈「笨重」的窘境。

比如其中提到「二、篇幅上限?忘了吧!」,就相當於在心中暗示了自己,可以愈寫愈長、愈寫愈正經。

繼續往這個方向演化,Weekly Review 的調性就會逐漸向「心得」靠攏——而結果也是如此,同時讓我愈來愈難下筆。

《Python 工匠》筆記(二)對「單元測試」的看法與建議

Python 工匠

這是《Python 工匠|案例、技巧與開發實戰》筆記的第 2 篇,你可以把它當作是一則重點整理,加上我個人的開發經驗與心得。

如第一篇所言,這是一本關於「Clean Code in Python」的書。

這二篇,我將整理書中第 13 章「有關單元測試的建議」的內容(以及我的看法)。我覺得真的寫得太好了,值得你了解。

話不多說,直接開始。

《人生 4 千個禮拜》筆記(二)抗拒「重要性中等」的誘惑

人生 4 千個禮拜

這是《人生 4 千個禮拜》筆記的第 2 篇,你可以把它當作是一則重點整理,加上大量我個人的經驗與想法

上一篇我們提到,「生產力」一詞在這個時代是如何地被重視——甚至有點扭曲。

以及如果你試圖用各種方法(尤其是那些筆記軟體與提升效率的工具)來增加生產力,反而很可能會掉入所謂的「效率陷阱」。

如果你也認同「過度追求效率很可能適得其反」這個命題,那很慶幸,我們已經達成了最重要的共識。這也是我給這本書高評價的原因。