[oeasy]python0144_try的完全体_否则_else_最终_finally
try的完全体
回忆上次内容
上次细化了主控程序(main.py)
导入(get_fruits.py)
处理(process.py)
输出(output.py)
使用了 try 结构
try
except
发现异常就报错
输入部分的错误
应该在 输入部分来报
具体怎么报呢?🤔
完善输入
输入的时候
对于输入内容的验证
应该包括
于是 再修改代码

输入代码 分成了
输入 a
输入 b
运行结果
如果 输入错误数据
会在get_fruits.py中报错

如果 输入正确
没有输出 确认信息

继续修改

测试通过

这里面有个 else
应该如何理解呢?
查询帮助

在游乐场帮助 里面有关于
try 的比较明确的介绍

else
else的意思是否则
就是没有发现异常时执行的
else 是一个可选(optional)子句
在执行完try中的内容之后
不执行 except 部分
只运行 else 部分
就从try中发现错误的位置跳出来
只执行except部分
不执行else部分
如果try中发现了指定异常
如果try中没有发现指定的异常

每个输入部分 都包括
else
except
try
int
input(“xxx”)
提示和输入
尝试转化为整型数字
异常处理
无异常输出
try 语句当中
除了 else 之外
还有 finally
综合一下
这就是 try 的完全体

注意!
都要有英文半角的冒号
都要通过 4 个字符的缩进控制范围
finally
finally如果存在
他是一个收尾的语句

try 之后
最后 总要执行finally
要么 except
要么 else
无论是except 还是 else
如果执行过程中
这个异常就被忽略了
但是这个异常没有被处理
那么就把这个异常先存着
等待finally执行之后
再抛出这个异常
还有任何的异常
如果遇到return break continue之类强制跳转语句
这如何理解?
新建一个test.py进行测试
理解finally
try里面有一个ValueError
不执行后面的d = i / 0
跳到except

except中
没有ValueError的处理办法
ValueError没有被处理
于是ValueError就存着
由于出现了异常
已经进入了except
无法进入else
最后进入finally执行
输出了At Last
执行外finally语句块
才把这个ValueError最后抛出来

这就是finally的执行逻辑
回到main.py
整体结构
这个结构就是
典型的
面向过程
程序设计方法

有一个主要的流程控制模块 main.py
有一个主要的决策者Guido一样
就像python语言这个声明
仁慈的独裁者
彻底的仁慈
意味着 没有主见和行动力下降
彻底的独裁
则会 失去广泛的帮助

仁慈和独裁像
是矛盾的两面
但是Guido却很好地平衡了两者
除了Guido之外
也有类似的特性
很多开源项目的老大

Guido是如何成长的呢?
扩展视野
Guido 利用假期去美国做一些WorkShop
美国硅谷是当时it的潮头

很早接触到了
互联网的发展趋势
互联网
Guido做了一个浏览器grail

网络集聚
网络的能量越来大
从报纸、杂志、电视
发展到邮件、论坛和浏览器
这为python的发展做了很好的准备
媒介
有人 就有 应用
有应用 就更有 人
于是会形成 正反馈
有了社区 就会有更多的人 加入社区
其实学编程 也是一样
越熟练 就会越自信
越自信 也就会越熟练
总结
我们了解了 try 的完全体
无论是否发现异常最终都要运行的代码块
没有发现异常时运行的代码块
发现异常时运行的代码块
尝试运行
try
except
else
finally

发现导入部分
可以再分为两个子模块
一个输入 a
一个输入 b
可以再拆分么?🤔
我们下次再说!👋
蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython