文章目录
- 1.4 模块化编程的流程
- 1.5 模块的 API 和功能描述要点
- 1.6 模块文档字符串和 API 设计
- 1.7 模块的创建和测试代码
1.4 模块化编程的流程
模块化编程的一般流程:
- 设计 API,进行功能描述;
- 编码实现 API 中描述的功能;
- 在模块中编写测试代码,并消除全局代码;
- 使用私有函数实现不被外部客户端调用的模块函数。
1.5 模块的 API 和功能描述要点
API(Application Programming Interface 应用程序编程接口)是用于描述模块中提供的函数和类的功能描述和使用方式描述。
模块化编程中,首先设计的就是模块的 API(即要实现的功能描述),然后开始编码实现 API 中描述的功能。最后,在其他模块中导入本模块进行调用。
我们可以通过help(模块名)查看模块的API。一般使用时先导入模块,然后通过help函数查看。
ps:老师在这期课程视频中以标准包math为例,讲解了标准库的定义方式和工作原理。
【例】导入 math 模块,并通过 help()查看 math 模块的 API:
import math
help(math)
运行结果(不完全截图):
也可以在 python 的 documentation 文档中查询。在开始-程序 python 的目录下可以找到
打开documentation后,即可通过索引输入“math”查询到对应的 API 内容
(不完全截图)
1.6 模块文档字符串和 API 设计
我们可以在模块的第一行增加一个文档字符串,用于描述模块的相关功能。然后,通过__doc__可以获得文档字符串的内容。
【例1】设计计算薪水模块的 API
"""
本模块用于计算公司员工的薪资
"""
company = 'KDI'
def year_salary(month_salary):
"""根据传入的月薪计算年薪"""
pass
def day_salary(month_salary):
"""根据传入的月薪计算日薪,一个月按照22.5个工作日(国家规定)计算"""
pass
上例的API中只有功能描述和规范,需要编码人员按照要求实现编码。
【例2】导入后如何读取文档字符串
import Salary
print(Salary.__doc__)
print(Salary.day_salary.__doc__)
运行结果:
1.7 模块的创建和测试代码
每个模块都有一个名称,通过特殊变量__name__可以获取模块的名称。在正常情况下,模块名字对应源文件名。 仅有一个例外,就是当一个模块本身被作为程序入口时(主程序、交互式提示符下),它的__name__的值为“main”。我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理。
【例1】导入模块时,模块名字对应源文件名
import Salary_Ok
print(Salary_Ok.__name__)
运行结果:
【例2】通过__name==“main”独立处理模块的测试代码
在Slalary_Ok源文件中运行
"""
本模块用于计算公司员工的薪资
"""
company = 'KDI'
def year_salary(month_salary):
"""根据传入的月薪计算年薪"""
return month_salary * 12
def day_salary(month_salary):
"""根据传入的月薪计算日薪,一个月按照22.5个工作日(国家规定)计算"""
return month_salary / 22.5
"""
测试代码
"""
if __name__ == '__main__':
print(__name__)
print(year_salary(10000))
print(day_salary(10000))
运行结果: