Python 功力提升的樂趣Python 功力提升的樂趣

這是「Python 入門三部曲」的最後一篇!歷時 2 年,終於要為這個系列劃下句點。

在此之前,我已寫下 3 篇關於《Python 功力提升的樂趣》的筆記與心得。本文建立在它們之上,但會從更高的俯視角度來介紹與推薦這本書。

從全書的輪廓與定位切入,讓初學者更容易掌握觀念,不至於迷失在細節中。對於已有經驗的 Python 開發者,則可以藉由一篇篇的筆記,直接找到自己感興趣的章節。

所以,本文不會在內容上重複前文,或在細節上多加著墨,而是更多的回顧與比較

這是為什麼我要先寫筆記,最後再完成這篇閱讀心得的原因。

當然,不是每一本書都值得你如此對待。畢竟其中要投入時間精力甚多,這是我第一次——可能也是最後一次,這麼詳細地介紹一本書。

但這本書,我認為值得。

系列:Python 入門三部曲

  1. 《精通 Python 第二版》心得:給入門者的 Python 學習藍圖
  2. 最佳 Python 入門書——《Python 技術者們 - 練功!》心得與導讀
  3. 《Python 功力提升的樂趣》心得與總結:給 Python 開發者的 Clean Code 入門指南

系列:Python 功力提升的樂趣

  1. 《Python 功力提升的樂趣》筆記(一)Black、命名、壞味道
  2. 《Python 功力提升的樂趣》筆記(二)Pythonic、行話、陷阱
  3. 《Python 功力提升的樂趣》筆記(三)函式、註解、docstring
  4. 《Python 功力提升的樂趣》心得與總結:給 Python 開發者的 Clean Code 入門指南

有鑑於本文是上述兩個系列的最後一篇,我打算嘗試一個與以往截然不同的寫法

改用回顧與分析的方式,一步一步地梳理過去各篇文章的關鍵著眼點,最後勾勒出本書的核心價值。為兩個系列同時劃下句點。

我認為,和其它文章內容的互相比較,更能突顯本書的整體定位

這或許是我所能想到,最好也最有趣的收尾方式。


「Python 入門書系列」的定位與回顧

我們先來看看「Python 入門三部曲」部分。

精通 Python 第二版

第一本我選擇了,可能是全台最暢銷的 Python 書籍——《精通 Python 第二版》。

這是一個「大而全」的選擇,儘管它的內容不算深入,而且對於初學者來說,很多部分我覺得也稱不上平易近人。比如介紹 Flask 框架。

不過它的基礎語法教學很值得肯定。

之所以必須如此,是因為 Python 使用者實在太多樣化。彼此的目的不同、需求不同,學習 Python 的方式也必然有所差異。

所以我們要先準備一張「藍圖」,讓我們縱觀 Python 的全貌,以及它所能做的到所有事情,再從中做出屬於自己的取捨

而本書顯然是扮演藍圖角色的絕佳選擇。

Python 技術者們 - 練功!

有了全局輪廓之後,我們真的要來「練功」了。

對於有特定目標的 Python 使用者,比如使用 Python 進行資料分析,可以不必完整地看完這本書,就可以開始動手實作。

因為很多工作其實更需要對特定套件的熟悉與了解,而不是 Python 語言本身。

可以說,本書的目標客群還是更加著眼於「Python 開發者」,而不是「Python 使用者」(兩者沒有明確的分界,但仍有些區別)。

因此,如果你的目標是成為一名 Python 開發者,那麼這本書就是你的最佳入門選擇。

Python 功力提升的樂趣

最後是我們的主角——《Python功力提升的樂趣:寫出乾淨程式碼的最佳實務》。

為什麼是第三位出場的呢?原因不難理解。

首先我們要知道 Python 能做什麼,然後問自己想用 Python 做什麼

經過思考,決定成為一個 Python 開發者後,才是如何寫出乾淨的 Python 程式碼。

換句話說,對於主要把 Python 當作完成工作的工具的使用者而言,是否能寫出乾淨的 Python 程式碼,恐怕不是特別重要——完成目標才是第一位。

所以,如果覺得自己不太需要看完上述第二本書,那本書則更加不是必讀。

這是取捨的優先順序,也是選擇的藝術


誰需要看《Python 功力提升的樂趣》?

當然是自認已經或將要成為 Python 開發者的人。

Python 開發者

我們還是試著簡單定義一下,怎麼樣算是一個 Python 開發者:

  • 熟悉 Python 語法,使用 Python 開發應用程式、服務或系統。
  • 你寫的 Python 程式碼不只要能完成工作,還會被讓他人閱讀、維護
  • 對於「最佳實踐」有一定追求。不只關心結果,還關心過程。因為這將會影響到產出的程式碼品質

我終究只能列舉一些條件,因為 Python 開發者的定義實在太廣泛了。

簡而言之,你希望自己的 Python 程式碼更加乾淨、易讀、易維護,那麼這本書就是你的好幫手。

而在我看來,有這樣的心態,就已經算是一個 Python 開發者了。


為什麼要寫乾淨的 Python 程式碼?

為什麼 Clean Code 很重要?

乾淨的程式碼有兩個不可取代的優點:

  1. 易讀性:程式碼不僅是給自己,同時也是給別人看的
  2. 易維護性:當程式碼變得更加複雜時,乾淨的程式碼可以讓你更容易找到問題

這兩件事,說到底,就是減少痛苦與省下時間!

其它都不論,省下寶貴的時間就是王道。

Bug 越少,修 bug 的時間就越少;程式碼越好讀,你就越快找到問題所在。

誰不想要快樂工作、快樂生活呢?


「Python 功力提升的樂趣」系列定位與回顧

好,那我們就來看看,了解了 Python 基本功後,究竟要如何更進一步讓自己的程式碼乾淨、好讀。

筆記(一)Black、命名、壞味道

工欲善其事,必先利其器。

如果專案沒有使用 linter、formatter 來進行開發,那我幾乎無法想像,這個專案程式碼會有多麼的雜亂。

整潔的程式碼有很多層次,就像金字塔一樣。而機器能夠代勞的,就讓它們代勞吧!

作者推薦 Black,這是很好的選擇。而現在的我一律推薦 Ruff

相關文章:Python 開發:Ruff Linter、Formatter 介紹 + 設定教學

總之,有這些工具輔助,我們未必能寫出乾淨的程式碼。

但沒有它們,一切都只是空談。

筆記(二)Pythonic、行話、陷阱

Pythonic 是一個很有趣的概念,它代表了 Python 的獨特風格,以及最佳實務

要達到 Pythonic,就必須要熟悉 Python 的特性,並且適時運用

這需要長時間的經驗與累積

事實上,只要不是「有意識地追求」,無論你寫了再久的 Python,都不一定能夠寫出 Pythonic 的程式碼。

這不是時間問題,而是「心態」問題。

當然我並不認為每一個 Python 開發者都需要追求 Pythonic,但如果你也想,那本書是一個很好的開始

筆記(三)函式、註解、docstring

這篇的重點應該是 docstring

我在許多文章中都強調過 docstring 的重要性。它遠遠不止是單純的註解或文件,應該視為程式碼的一部分

我很清楚——我非常清楚:一則用心撰寫的 docstring,可以為一個「複雜函式」降低多少「認知負擔」。可以為函式的閱讀者省下多少理解時間(和腦細胞)。

然而,docstring 在實際開發中被輕忽的程度,幾乎與它所帶來的價值一樣巨大。

在我看來,不寫 docstring、不知道怎麼寫好 docstring,都是非常非常可惜的事。

以後我會專門寫一篇文章,示範如何寫好 Python docstring。我們只需要先知曉:

專案程式碼不是一堆待執行的指令,做完就好。而是需要理解與維護的有機體,docstring 更是其中重要的一環。


結語:Beyond the Basic Stuff with Python

沒有人能夠只因為寫得久,就自動變成真正的 Python 大師。

無論是 Pythonic 或 Clean Code,都需要我們在開發這條路上一次又一次捫心自問:

這樣寫,是不是最好的方式?

而本書的最大價值,在於讓這個「起點」變得清晰且平易近人

因為再往後的 Clean Code 之路,就不再只是表面的程式碼風格,而是需要你了解更多 Python 的進階特性,才能夠理解這些設計的長短得失取捨之道

我們需要一本書,幫助我們打好基礎,培養能力去面對未來更加錯綜複雜的情況。

而《Python 功力提升的樂趣》無疑是一個非常稱職的選擇。