[oeasy]python0143_主控程序_main
主控程序
回忆上次内容
上次把 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