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

注意! 用 "从 模组 载入 名称" 的方法, 函数会被加到目前的名称空间中. 也就是说, 你不会看到 '费氏' 这个名字而只会算到 '数项'. 另外, "从 模组 载入 *" 的意思是说载入该模组中所有的东西. 可以想像成把模组中的程式码搬到目前的码段中再执行一遍 (事实上有些分别, 但无妨).