20201222_145_模块化编程的流程_设计和实现分离

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

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值