欢迎光临散文网 会员登陆 & 注册

[oeasy]python0143_主控程序_main

2023-04-29 18:00 作者:oeasy  | 我要投稿

主控程序

回忆上次内容

  • 上次把 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



[oeasy]python0143_主控程序_main的评论 (共 条)

分享到微博请遵守国家法律