1
Python编程从入门到实践
1.9.7 5.7 代码复用和模块化程序设计
5.7 代码复用和模块化程序设计

程序是由一条条语句组成的,当程序功能复杂,代码行数很多时,如果不采用一定的组织方法,就会使程序的可读性较差,维护起来难度较大。

Python语言从代码层面采用函数和对象两种抽象方式,分别对应面向过程和面对对象编程思想。

①使用函数将完成特定功能的代码进行封装,然后通过函数的调用完成该功能。

②将一个或者几个相关的函数保存为.py文件,构成一个模块。导入该模块就可以调用模块中定义的函数。

③一个或者多个模块连同一个特殊的文件__init__.py,保存在一个文件夹下,形成包(package)。包能方便地分层次组织模块。

通过下面的例子讲解模块化程序设计的编程思想。

【例5.16】编写程序完成:输入任意数a,b及整数n,使用二项式定理计算(a+b)n

根据数学的基本知识,二项式定理计算表示如下:

其中,二项式系数为组合数,求解方法如下:

根据公式,二项式的计算可以分解为以下几个子问题:

①求整数的阶乘。

②求解组合数。

③求解二项式中的各项。

④求解各项的累加和。

其中每个子问题都可以使用函数来实现,由于阶乘和组合数可以使用的场合较为普遍,因此可以将其封装在模块combinatorial中供其他程序使用,该模块对应的文件为combinatorial.py。将二项式各项的求解和各项之和求解密切关联,将其封装在模块bino中,文件名为bino.py。然后将这两个模块用目录结构的方法组织成包,保存在binomial文件夹中。程序整体结构如图5-19所示。

【例5.17】求解二项式的相关函数,保存为bino.py。

图5-19 模块化程序设计的文件结构

combinatorial模块的代码如下。

【例5.18】求解组合数的相关函数,保存为combinatorial.py。