6 寫作模組: 讓你的編程工具箱功能倍增

模組其實就是存成 .py 檔的函數定義或概念定義. 中蟒鼓勵重用你已寫好的代碼, 模組的設計使這項工作變的很容易.

假設你寫了這樣兩個函數并把它存成 "費氏.py"

定義 數項(上限):
    """ 本函數計算不大于 '上限' 值的費氏級數項, 傳回該項值. """
    甲, 乙 = 0, 1
    只要 乙 < 上限:
	甲, 乙 = 乙, 甲 + 乙
    傳回 乙

定義 數列(上限):
    """ 本函數計算不大于 '上限' 值的費氏級數列, 傳回該級數列 """
    甲, 乙 = 0, 1
    答 = []
    只要 乙 < 上限:
	答.附加(乙)
 	甲, 乙 = 乙, 甲 + 乙
    傳回 答

你可以在別的程式中調用這兩個函數了:

>>> 載入 費氏
>>> 內容(費氏)
['__檔案__', '__名稱__', '__說明__', '__內建__', 數項, 數列 ]
>>> 費氏.數項(100)
89
>>> 費氏.數列(100)
1 1 2 3 5 8 13 21 34 55 89
>>> 費氏.數列.__說明__
'本函數計算不大于 '上限' 值的費氏級數, 傳回該級數列'
>>> 費氏.__檔案__
'費氏.py'
>>> 甲 = 費氏.數項
>>> 寫 "黃金比例接近于: " , (浮點數)(甲(60)) / 甲(100)
黃金比例接近于: 0.6179775280898876

"載入" 是中蟒的保留字, 用來讀取模組檔的內容. 模組檔其實和普通中蟒程式檔沒分別. 中蟒會把該模組檔中的函數, 變量等指派到模組名下. 用的時候把該模組當成是一個概念就行了, 它也有自己的成員函數, 屬性等. 中蟒這樣做, 大大簡化了擴展的步驟, 再也不用為占用了相同的函數名稱而頭痛了.

除了 "載入" 外, 還有別的載入方法:

>>> 載入 費氏 名 無名氏
>>> 無名氏.數項(100)
89

>>> 從 費氏 載入 數項
>>> 數項.(100)
89

注意! 用 "從 模組 載入 名稱" 的方法, 函數會被加到目前的名稱空間中. 也就是說, 你不會看到 '費氏' 這個名字而只會算到 '數項'. 另外, "從 模組 載入 *" 的意思是說載入該模組中所有的東西. 可以想像成把模組中的程式碼搬到目前的碼段中再執行一遍 (事實上有些分別, 但無妨).