用Python Typing提升程式碼的可維護性: 從基本標註到泛型標註

Jia-Yau Shiau
AI Blog TW
Published in
20 min readDec 20, 2023

--

自1991年Python問世以來,簡潔明了的語法與靈活性使其快速地成為最受歡迎的動態類型語言之一。從資料處理、網絡開發到現在的AI模型開發,都是Python被大幅採用的領域。然而,隨著項目規模複雜性的增加,Python動態類型的特性也成為一把雙刃劍。在這種背景下,Python的Typing系統—類型標註 (Type Hinting) 的引入,成為了提升程式碼質量和可維護性的關鍵。

Python Typing可以明確指定變數和函數的期望類型,這提升了程式碼的可讀性和清晰度,減少了在開發和維護過程中的不確定性。再搭配靜態分析工具的功能,能夠提供更精確的提示和錯誤檢查。然而,實踐的關鍵挑戰是如何在保持Python本身的動態特性和靈活性的同時,合理地應用類型標註。

Cover made with Canva (image generated by Bing).

文章難度:★★☆☆☆
閱讀建議: 這篇文章會介紹Python Typing系統的核心操作,包括基本的型態標注與泛型,後續再針對如何合理地標註並保持靈活性上給出一些實作建議。在基礎知識上要先對Python語法有一定程度認知,並且具備物件導向程式設計的知識。如果對於型態標註已經有一定認識的人,可以直接跳到泛型標註或是實踐建議
推薦背景知識:Python, Python typing, dynamic programming language, object-oriented programming, generic programming.

Python Typing (類型標註)

Python一直被認為是一種動態類型語言,這意味著在寫程式碼時不一定要預先設定變數的類型,而是在程式碼運行時才確定變數的類型。這種靈活性是Python非常受歡迎的原因之一,但也帶來了某些挑戰,特別是在大型或復雜的程式開發中。在這些情況下,缺乏類型信息可能導致難以debug、程式碼不易理解、或需要重構時風險也較高。

引入類型標註 (Type Hinting) [1] 是對這個問題的一種解決方案。從Python 3.5開始,Python支持在程式碼中添加類型標註。這些標註不會影響程序的運行,但它們可以被類型檢查器、IDE和其他工具用來進行更好的靜態分析。這樣做的好處包括提高程式碼的可讀性、易於維護、更早地發現錯誤等。

在Python 3.5之前,Python沒有官方的類型標註系統。開發者通常通過註釋、文檔或命名約定來指示變數類型。Python 3.5引入了typing模塊,開始支持類型標註。這一變化代表了Python社群對於提高程式碼質量和可維護性的認可和努力。

基本類型標註

在深入了解如何在Python中使用類型標註之前,以下先從基礎開始,了解一些基本概念和標註方法。

標註整數、浮點數、字符串

--

--