模块与包
模块化的程序设计思想
模块设计的一般原则
- 1.先设计API,再实现模块
- 2.控制模块的规模,只为客户端提供需要的函数。实现包含大量函数的模块会导致模块的复杂性。例如,Python的math模块就不包含正割函数、余割函数和余切函数,因为这些函数很容易通过函数math.sinn()、math.cos()和math.tan()的计算而得
- 3.在模块中编写测试代码,并消除全局代码
- 4.使用私有函数实现不被外部客户端调用的模块函数
- 5.通过文档提供模块帮助信息
模块的实现的概念
- “实现”是指实现用于重用的函数或类的代码,模块的实现就是若干实现函数或类的代码的集合,保存在一个后缀为.py的文件中;
- 模块的实现必须遵循API规约,可以采用不同算法实现API,这为模块的改进和版本升级提供了无缝对接,只需要使用遵循API的新的实现,所有客户端程序无须修改即可以正常运行。
模块的客户端
- 客户端遵循API提供的调用接口,导入和调用模块中实现的函数功能;
- API允许任何客户端直接使用模块,而无需检测模块中定义的代码,例如可以直接使用模块math和random等。
模块化程序设计的优越性
- 可以编写大规模的系统程序
- 控制程序的复杂度
- 实现代码重用
- 增强可维护性