[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
- 增大窗口宽度
- 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
- 发现异常就报错
- 输入部分的错误
- 应该在 输入部分来报
- 具体怎么报呢?
- 下次再说!
[oeasy]python0143_主控程序_main的更多相关文章
- cdnbest节点安装后连不上cdn主控原因排查
1. 查看节点程序是否启动 ps -aux |grep kangle 2. 登陆cdn节点用telnet命令查下和主控的通信,命令:telnet 主控ip 3320 3. 如果节点程序都有启动,可查看 ...
- linux系统编程综合练习-实现一个小型的shell程序(一)
之前已经花了不少篇幅学习了linux系统编程的很多知识点:文件与io.进程.信号.管道,而零散的知识点,怎么能够综合的串接起来是学习的一个很重要的目的,当然最好的方式就是用所学的知识点做一个项目了,所 ...
- 自动化集成部署udeployer 批量统一安装一键部署
通过jenkins构建项目:version版本控制:udployer自动化集成:ucop业务巡检做到高效高可用的自动化体系. 1.0版本: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一sh ...
- linux笔记_防止ddos攻击
一.什么是DoS攻击 DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带宽攻 ...
- 转:MyBean简介
(在开始之前,非常感谢 D10.天地弦) 1.1 概述 MyBean是一个用于Delphi应用程序开发的开源.轻量级.可配置插件框架.它通过巧妙的系统架构设计, ...
- web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入
web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...
- Android执行程序或脚本的方法
Java中提供了两种方法来执行程序或脚本: (1) 使用Runtime的exec()方法 (2) 使用ProcessBuilder的start()方法 ProcessBuilder.start() 和 ...
- 分布式拒绝服务攻击 DDoS
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒 ...
- wildfly jobss 同时连接多个数据源
由于需要从一个远程机器取数据.处理后保存到本地数据库处理.用 wildfly datasource 会报: [com.arjuna.ats.arjuna] (default task-6) ARJUN ...
- Java实验三报告
一. 实验内容 (一)敏捷开发与XP 摘要:一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈.假设简单性.递增更改.提倡更改.优质工作.XP软件开发的基石是XP的活动,包括:编码 ...
随机推荐
- MySQL学习笔记-多表查询(上)
多表查询(上) 一. 多表关系 在实际应用中,根据需求,设计的表结构之间存在联系,联系一般分为以下三种 一对多(多对一) 多对多 一对一 1. 一对多(多对一) 案例:部门与员工的关系,一个部门对应多 ...
- 使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串
安装1.0.10以及以上版本的 Wesky.Net.OpenTools 包 包内,该功能的核心代码如下: 自定义属性: 实体类JSON模式生成器: 使用方式:引用上面的1.0.10版本或以上的 ...
- kettle从入门到精通 第六十二课 ETL之kettle job中发送邮件(带多个附件),闭坑指南
1.今天群里一个朋友加我微信遇到问下向我求助.一顿测试下来发现原来是使用kettle姿势不对,对kettle没有完全驾驭导致的,今天和大家一起分享下这个问题. 2.先自我膨胀下,自从写kettle系列 ...
- Linux扩展篇-shell编程(五)-流程控制(二)-case语句
基本语法: case expression in pattern1) statement1 ;; pattern2) statement2 ;; *) statement3 ;; esac 注意事项: ...
- Easysearch 内核完善之 OOM 内存溢出优化案例一则
最近某客户在使用 Easysearch 做聚合时,报出 OOM 导致掉节点的问题,当时直接让客户试着调整 indices.breaker.request.limit ,但是不起作用,于是又看了下 Ea ...
- js jquery input radio点击事件
HTML: <input type="radio" name="myname" value="1" />1 <input ...
- redis zset 延迟合并任务处理
redis zset 延迟合并任务处理 @Autowired public RedisTemplate redisTemplate; ##1.发送端:在接口中收集任务ID,累计时间段之后,合并处理. ...
- R语言求取大量遥感影像的平均值、标准差:raster库
本文介绍基于R语言中的raster包,批量读取多张栅格图像,对多个栅格图像计算平均值.标准差,并将所得新的栅格结果图像保存的方法. 在文章基于R语言的raster包读取遥感影像中,我们介绍了基 ...
- Jenkins项目构建成功后,配置邮件
6.1 配置信息 6.1.1 发给多个收件人 邮件要发送给多个人,要使用[,]分割 6.1.2. 项目构建引用Editable Email Notification,设置tigger 在项目构建后,引 ...
- 如何在Android 确定 lunch对应的内核配置
如何在Android 确定 lunch对应的内核配置 背景 因为在调试中发现,user版本出现了一个userdebug版本上没有的bug.为了对比安卓 user版本与userdebug版本的差异,涉及 ...