上次把 apple.py 拆分成了
(资料图)
输入
主函数
引用模块中变量的时候
get_fruits.a
get_fruits.b
要带上包(module)名
最终
拆分代码 成功!
可以将程序
输入
输出
再拆分成
然后 再由主函数调用吗?
新建一个 main.py 文件
导入 input、output 两个包
然后运行
vi -o main.py get_fruits.py output.py
增大窗口宽度
ctrl+w,+
减小窗口宽度
ctrl+w,-
运行成功
既然我在 main.py 里面已经导入了 input 这个包
我还有必要在 output 中导入这个包么?
实践出真知
试着删除output中的第一句
失败!
还是需要在 output 中导入 get_fruits 这个包的
虽然 main 认识了 get_fruits
但是 output 不认识也不行
不认识 就无从得到输入的数值
我们跳出具体文件
去观察文件架结构
可以看到出现了
两个被引用包的 pyc 文件
能对比一下吗?
编译后的pyc文件
字符串
变量名
函数名
依稀能够看到
模块隐隐约约
是可以看懂的
其实代码可以分成三块
输入
处理
输出
这是一个典型的 面向过程的 程序
把复杂的过程
每个模块 做自己简单明确的事情
专业分工
提高效率
分解成 相对简单明确的模块
面向过程就是 Procedure Oriented
按部就班
这是工业时代
提高效率的思维模式
铁路警察
各管一段
不要想着怎么发明轮子
轮子有现成的
拿来用就完事了
接下来把模块分成三块
功能作用模块名输入接收到什么信号get_fruits处理怎么处理信号process输出最终输出什么信号output
那建立 process.py
main
需要 3 个包都导入
process
只需要导入 get_fruits
get_fruits
只被执行一次
虽然被导入了两次
但是输入数值的部分
output
只需要 process 模块求和的结果
而不需要导入 get_fruits 模块
需要明确 total 来自于 process 包
测试结果
会如何呢?
能成功
数字(123)当做测试用例的话
但是用字母(abc)当测试用例的话
问题出在process.py中
int(a) + int(b)那一步
所以需要在那里
try
except
修改代码
字母的测试用例
可以顺利地报错
但是现在还面临一个问题
是 a 出了问题
还是 b 出了问题
就是不明确
不知道
报错细节不明确
在process模块中
分别try...except...
这样运行是没有问题的
不过应该还有更好的方式
转化工作
其实应该在输入部分完成
输入变量的容错处理
应该在输入的时候 就第一时间做
不要留到数据处理时 才做
我们细化了主控程序(main.py)
导入(get_fruits.py)
处理(process.py)
输出(output.py)
使用了 try 结构
try
except
发现异常就报错
输入部分的错误
应该在 输入部分来报
具体怎么报呢?
下次再说!
蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
关键词: