文章目录

  • 1.4 模块化编程的流程
  • 1.5 模块的 API 和功能描述要点
  • 1.6 模块文档字符串和 API 设计
  • 1.7 模块的创建和测试代码


1.4 模块化编程的流程

模块化编程的一般流程:

  1. 设计 API,进行功能描述;
  2. 编码实现 API 中描述的功能;
  3. 在模块中编写测试代码,并消除全局代码;
  4. 使用私有函数实现不被外部客户端调用的模块函数。
1.5 模块的 API 和功能描述要点

API(Application Programming Interface 应用程序编程接口)是用于描述模块中提供的函数和类的功能描述和使用方式描述。
模块化编程中,首先设计的就是模块的 API(即要实现的功能描述),然后开始编码实现 API 中描述的功能。最后,在其他模块中导入本模块进行调用。
我们可以通过help(模块名)查看模块的API。一般使用时先导入模块,然后通过help函数查看。

ps:老师在这期课程视频中以标准包math为例,讲解了标准库的定义方式和工作原理。

【例】导入 math 模块,并通过 help()查看 math 模块的 API:

import math
help(math)

运行结果(不完全截图):

模块化编程python 模块化编程教程_模块化编程python

也可以在 python 的 documentation 文档中查询。在开始-程序 python 的目录下可以找到

模块化编程python 模块化编程教程_字符串_02


打开documentation后,即可通过索引输入“math”查询到对应的 API 内容

(不完全截图)

模块化编程python 模块化编程教程_API_03

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__)

运行结果:

模块化编程python 模块化编程教程_模块化编程_04

1.7 模块的创建和测试代码

每个模块都有一个名称,通过特殊变量__name__可以获取模块的名称。在正常情况下,模块名字对应源文件名。 仅有一个例外,就是当一个模块本身被作为程序入口时(主程序、交互式提示符下),它的__name__的值为“main”。我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理。

【例1】导入模块时,模块名字对应源文件名

import Salary_Ok
print(Salary_Ok.__name__)

运行结果:

模块化编程python 模块化编程教程_模块化编程python_05

【例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))

运行结果:

模块化编程python 模块化编程教程_模块化编程python_06