[oeasy]python0143_主控程序_main

文章讲述了将Python程序拆分为输入、处理、输出三个模块,通过主控程序main.py调用。强调了模块化编程的重要性,并通过实例展示了如何处理输入数据的异常,提出了输入部分应尽早进行错误检查的优化建议。
摘要由CSDN通过智能技术生成

主控程序

回忆上次内容

  • 上次把 apple.py 拆分成了
    • 输入
    • 主函数
  • 引用模块中变量的时候
    • 要带上包(module)名
      • get_fruits.a
      • get_fruits.b
  • 最终
    • 拆分代码 成功!
  • 可以将程序
    • 再拆分成
      • 输入
      • 输出
    • 然后 再由主函数调用吗?🤔

建立主控

  • 新建一个 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值