模組化可以想成許多的積木,可以快速被取用、組合成各種物品。
隨著程式碼越來越龐大複雜,設計程式時也應該遵循這樣的設計原則,包括:
函式(Function)
物件(Object)
與類別(Class)
函式庫(Library)
、套件(Package)
、模組(Module)
與應用程式介面(API)
以上設計原則,都是為了程式可以更容易被維護、除錯。
在Python中,我們使用函式(Function)
將重複出現的程式碼,通常是一系列的程序,做成函式,可以隨時呼叫使用,增加開發效率、以及讓程式碼更容易維護。
主要好處如下:
函式包含以下部分:
函式分成兩種類型,有回傳值
與無回傳值
。
請參考以下範例程式碼:
函式可以帶入參數
,在函式內使用該參數進行運算,但也可以不帶入參數。
在函式裡宣告使用的變數,與函式外的變數,有不同的使用範圍限制,我們稱為Variable Scope
。
分成兩種:
廣域範圍(global scope)
區域範圍(local scope)
可以透過函式globals()
、locals()
輸出該scope的所有變數
遞迴(Recursion)
,定義如下。
根據呼叫對象不同,遞迴可分成兩種
階乘的基本定義如下
請利用遞迴的技巧設計程式,計算 4! 為何?
參考程式碼如下:
bmi_calculator
Note: BMI計算公式:BMI=(體重/身高^2)
參考程式碼:
版本1. 有參數(身高與體重)、有回傳值(bmi值)
版本2. 無參數、無回傳值
由於物件與類別的應用,較適合大型程式應用,例如遊戲、大型網站,在此不特別介紹,若有興趣,請參考補充資料:物件與類別
模組(Module)
:一個.py檔案就是一個 module,裡頭可以定義 variable
, function
, class
套件(Package)
:一個檔案資料夾,裡面存放多個module (.py檔案)函式庫(Library)
:根據特定用途,將多個Package集合在一個資料夾中應用程式介面(API, Application Programming Interface)
:Library開發者可定義哪些module中的function可以給別人引用,這些function就稱為API。對於API引用者,不需要了解實作內容,只需要說明文件知道API用途,自行使用開發新程式。我們再回頭看這個使用第三方函式庫openpyxl
的範例
小提示:如果第19行想直接引用Font
,可以在第三行新增這行程式碼
以下內容節錄自Moxa UC-8100的User Manual,跟購買者說明,如何引用Moxa定義的API,來開發程式,控制UC-8100這台IoT Gateway
有經驗的開發者看到這份手冊,就可以知道Moxa的API主要是以C語言撰寫的,在呼叫API前,要安裝相關套件。
以下內容節錄自Google Maps Platform,這裡提供給想要使用Google Map API來做應用的開發者
有經驗的開發者看到這個網站的說明,就可以知道Google Map的API主要是以Javascript撰寫的。
請設計大樂透的報明牌程式,從1~49裡面,隨機抽出六個不重複的數字
請引用random.sample
這個模組來隨機取出六個數字
不直接引用sample API
直接引用sample API
Python程式設計入門