《Python 功力提升的樂趣》筆記(三)函式、註解、docstring

Python 功力提升的樂趣

這是《Python 功力提升的樂趣:寫出乾淨程式碼的最佳實務》閱讀筆記的第 3 篇,也是最後一篇。

你可以把它當作是一則重點整理,加上我個人的開發經驗與心得。

本文整理書中的第 10、11 章,而且篇幅幾乎集中在前者。畢竟無論什麼語言,「寫好函式」這件事總是如此重要,Python 自然也不例外。

系列:Python 功力提升的樂趣

  1. 《Python 功力提升的樂趣》筆記(一)Black、命名、壞味道
  2. 《Python 功力提升的樂趣》筆記(二)Pythonic、行話、陷阱
  3. 《Python 功力提升的樂趣》筆記(三)函式、註解、docstring

第 10 章:寫出有效率的函式

有效率的函式(或說「好的」函式)需要你在「命名、規模大小(行數)、參數數量和複雜性」之間,做出許多決定和取捨

這無疑是極具挑戰的事——尤其是取捨。

人生之難,就難在取捨。

本章探討的正是這些取捨之間的利弊得失,以及編寫函式的重要原則。不用說,絕對是關鍵的一章。

2023 那些我已不可或缺的「付費訂閱」推薦

DALL·E 3

這篇要來講述,2023 年的當下,對我而言「具有一定重要性」的付費訂閱。

這屬於完全個人化的心得,我會列出那些不可或缺的訂閱項目,並解釋它們對我的重要性所在。

所謂的「不可或缺」,意思是一旦我停止訂閱,我的工作和生活都會出現挑戰。而挑戰的大小,就是這些訂閱項目對我的影響力與價值。

以下排名同時也是重要性排名,就讓我們從最重要的開始吧!

別依賴「試誤法」寫程式

from Pixabay

這個情況真的太普遍,尤其是知識不夠紮實(指為開發所做的功課太少)的開發者。但如下所述,這其實是一個「開發習慣」議題。

無論如何,我不得不為此發聲:「請停止用『試誤法』來寫程式!」

我們先看看維基百科對於「試誤法」的闡述:

嘗試錯誤法,又稱試誤法(英語:trial and error),簡稱試錯,是用來解決問題、獲取知識。此種方法可以視為簡易解決問題的方法中的一種,與使用洞察力/直覺或理論推理的方法正好相反。

就像這句「此種方法可以視為簡易解決問題的方法中的一種」說的,在我看來,試誤法常常會得到 workaround(雖不能根本解決,但能避開問題的替代方法)等級的答案——這肯定不是好事。

首先我得說,「試誤」在軟體開發中,是一個常見且實用的手段。

我自己寫一些邏輯時,也常常在 jupyter notebook 先執行嘗試執行一下程式碼片段,看看結果,以確保我的想法沒錯。但,這只是一種輔助。

本文想強調的是:不要以「試誤」作為開發的基調,或解決問題的主要方式。換言之,不要濫用試誤

否則那將是一場災難。

無數次 trial and error,看起來勤勤懇懇,實際上是最低效的開發手段。我覺得,試個兩、三次行不通,就應該重新思考問題的本質——而非繼續嘗試。

Kyo's Django Tutorial:系列介紹與導讀

github.com/kyomind/Django-Tutorial

這是「Django Tutorial」系列文章的第「0」篇,也就是序言。

主要說明整個系列的寫作動機、文章規劃,並介紹 GitHub 倉庫的使用方式。

嘗試寫作這樣「單一主題長系列連載」的靈感,源於下列二者:

兩位都是「既能做又能寫」的優秀開發者,值得我們學習。


系列寫作動機

雖然 blog 上本來就有少數被我歸類為「系列」的文章,比如 Simple Notion 系列。但最多就是 3-4 篇,這是我有意控制的結果,希望整個創作週期不要拉得太長。

而且用 3-4 篇呈現、表達一個我認為重要的主題,通常也足夠了。

後來想到自己雖然在工作上寫了 2 年 Django,對 Django 的文章介紹卻非常少。讓我不免覺得,自己有違作為一個 Django 開發者的「義務」。

所以起心動念,想說至少寫個「Django Models」三部曲,也就是目前整個系列中,在時間軸上第一篇發表的文章〈Django ORM:一對一、一對多外鍵教學(上)前言與關聯設定〉。

寫完後又沉寂了好一段時間,才有了這篇序言。

重啟了 Twitter 與我的理由

上個月重新登入了塵封一段時間的 Twitter(下稱推特)帳戶。也開始在上面發一些零星的推文——幾乎都是程式相關。

一直以來我都稱不上推特的重度用戶,如果有一個社群平台是我獲取資訊的來源,那主要還是臉書。

但我們知道,臉書在幾波隱私相關的大事件後,演算法有了較為明顯的改動。很多人——包括我在內——都覺得臉書的推薦內容不再像過去那般有趣、實用。

於是在轉職後的這幾年,我也開始看推特。


Cal Newport 對推特的看法

如果你看比較多 Cal Newport 的內容(主要是 Podcast),你會發現,他雖然沒有任何社群平台帳戶,但他對推特的討論與關注,遠遠超過對其它平台的討論,比如臉書、Substack。

EP. 241: The Virality Trap〉這集有一定的代表性。

23,Blog 新增「發文計畫」與我的思路

2023/11/04更新:24,收回「發文計畫」


前幾天躺在床上,突發奇想,想到一個可以改善我「發文紀律」的有效手段!

從以前到現在,雖然習慣把想寫的主題事先收集起來,但實際上它們究竟會以什麼樣的順序被創作,則非常依賴我當下的心情與喜好。

我並不喜歡這種「今天想到寫什麼才寫什麼」的模式,儘管多數主題都不是臨時起意,但創作本身卻存在很大的不確定性

這是一種不穩定的狀態

怎麼改善?沒錯,我想到用 Notion 建立我的發文行事曆,我稱之為「發文計畫」。

現在,你可以在 blog 左上角的選單找到它。

這篇來就介紹我的思路、為什麼選擇 Notion,以及如何規劃版面呈現等議題。