[oeasy]python0143_主控程序_main
主控程序 回忆上次内容
-
上次把 apple.py 拆分成了
-
输入
-
主函数
-
引用模块中变量的时候
-
要带上包(module)名
-
get_fruits.a
-
get_fruits.b
-
最终
-
拆分代码 成功!
-
可以将程序
-
再拆分成
-
输入
-
输出
-
然后 再由主函数调用吗?🤔
建立主控
-
新建一个 main.py 文件
-
导入 input、output 两个包
-
然后运行
-
vi -o main.py get_fruits.py output.py

添加图片注释,不超过 140 字(可选)
-
增大窗口宽度
-
ctrl+w , +
-
减小窗口宽度
-
ctrl+w , -
运行

添加图片注释,不超过 140 字(可选)
-
运行成功
程序结构

添加图片注释,不超过 140 字(可选)
-
既然我在 main.py 里面已经导入了 input 这个包
-
我还有必要在 output 中导入这个包么?
-
实践出真知
-
试着删除output中的第一句

添加图片注释,不超过 140 字(可选)
尝试
-
失败!

添加图片注释,不超过 140 字(可选)
-
还是需要在 output 中导入 get_fruits 这个包的
-
虽然 main 认识了 get_fruits
-
但是 output 不认识也不行
-
不认识 就无从得到输入的数值
-
我们跳出具体文件
-
去观察文件架结构
文件结构
-
可以看到出现了
-
两个被引用包的 pyc 文件

添加图片注释,不超过 140 字(可选)
-
能对比一下吗?
对比

添加图片注释,不超过 140 字(可选)
-
编译后的pyc文件
-
依稀能够看到
-
字符串
-
变量名
-
函数名

添加图片注释,不超过 140 字(可选)
-
模块隐隐约约
-
是可以看懂的
顺序过程
-
其实代码可以分成三块
-
输入
-
处理
-
输出

添加图片注释,不超过 140 字(可选)
-
这是一个典型的 面向过程的 程序
-
面向过程就是 Procedure Oriented
-
按部就班
-
把复杂的过程
-
分解成 相对简单明确的模块
-
每个模块 做自己简单明确的事情
-
专业分工
-
提高效率
-
这是工业时代
-
提高效率的思维模式
分工明确
-
铁路警察
-
各管一段
-
不要想着怎么发明轮子
-
轮子有现成的
-
拿来用就完事了

添加图片注释,不超过 140 字(可选)
-
接下来把模块分成三块
-
那建立 process.py
三步走
-
main
-
需要 3 个包都导入
-
process
-
只需要导入 get_fruits
-
get_fruits
-
虽然被导入了两次
-
但是输入数值的部分
-
只被执行一次
-
output
-
只需要 process 模块求和的结果
-
而不需要导入 get_fruits 模块
-
需要明确 total 来自于 process 包

添加图片注释,不超过 140 字(可选)
-
测试结果
-
数字(123)当做测试用例的话
-
能成功
-
但是用字母(abc)当测试用例的话
-
会如何呢?
不成功 🙅🏻♀️

添加图片注释,不超过 140 字(可选)
-
问题出在process.py中
-
int(a) + int(b)那一步
-
所以需要在那里
-
try
-
except
处理异常
-
修改代码

添加图片注释,不超过 140 字(可选)
运行结果
-
字母的测试用例
-
可以顺利地报错

添加图片注释,不超过 140 字(可选)
-
但是现在还面临一个问题
-
就是不明确
-
不知道
-
是 a 出了问题
-
还是 b 出了问题
-
报错细节不明确
修改代码
-
在process模块中
-
分别try...except...

添加图片注释,不超过 140 字(可选)
-
这样运行是没有问题的
优化代码
-
不过应该还有更好的方式

添加图片注释,不超过 140 字(可选)
-
转化工作
-
其实应该在输入部分完成
-
输入变量的容错处理
-
应该在输入的时候 就第一时间做
-
不要留到数据处理时 才做
总结
-
我们细化了主控程序(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