让python飞:形象理解python 异常处理、递归

在这里插入图片描述
Day09勺子修罗盘记
勺子有一天发现自己的罗盘坏了。于是他就去找厂家修理。厂家热情接待了勺子。并向他介绍说这个厂经常会有勺子带着罗盘回来修理。有的勺子要求罗盘没有支架悬在半空
(1.ZeroDivisionError:分母为0的异常),有的勺子说罗盘材质与勺子不符(2).TypeError:类型有误的异常),有的勺子说罗盘上没有刻上自己名字(3).NameError:没有定义就使用的异常),有的勺子说罗盘太大了超过预定尺寸(4).IndexError:下标越界的异常),有的勺子说罗盘根本就没有给他们(5).FileNotFoundError:文件找不到的异常)。
厂长告诉他说,我们家的罗盘出厂前,都会在车间进行调试检查(演示异常处理的方式一:try … except …)。检查仪器类似于地铁入口的安检机。不同的是,我们的安检装置履带两边会有不同的报警装置,按照从大到小不同功能排列(except:理解它是捕获器,后面可以定义异常类型,并且和as关键字配合使用;?定义多个except是合法的,但是它的执行顺序是有由上往下,一旦匹配上某个except,之后的就不执行了;匹配成功就理解将异常对象捕获住并且kill,顺便会执行except内部的代码)。当一个罗盘通过时,如果触发了第一个报警装置,它会立刻被该通道从履带上捕捉,直接落到最后的封装箱(将一定要被执行的代码定义在finally中,不管之前的代码怎么样(异常是否被解决),finally一定会被执行。在后期的学习和开发中,我们将关闭文件、关闭数据库连接等操作都定义finally中)。罗盘经过报警装置后,会有其他的仪器处理罗盘(else:位置在finally前,except后;效果/作用类似于循环没有异常对象出现,else就会被执行,反之不会被执行),然后再落到封装箱。当然,这些报警器是我们公司自己设置的,客户也可以自己提要求,我们来设置将其从履带中间挖一个洞,只要罗盘落到我们的洞里,就和被报警器抓取是一样的(raise:手动抛出一个异常类型的对象,定义:raise 异常类型(msg))。
厂长还说,我们这目前一共有四种机型。有的报警器只有一种功能(except 异常类型3 as e:),有的报警器有好几种功能(except (异常类型4,异常类型5,…,异常类型m) as e:),还有个最大的报警器拥有所有的报警功能(except Exception as e:),后来我们觉得它太大了,就把做了个小一点的简化版(except:)。
勺子好奇的问厂长,为什么有的机子最后有箱子,有的没有啊?厂长回答说,有的罗盘放进机器里是要打开箱子的,但出机的时候必须要关闭(将一定要被执行的代码定义在finally中,不管之前的代码怎么样(异常是否被解决),finally一定会被执行 ,在后期的学习和开发中,我们将关闭文件、关闭数据库连接等操作都定义finally中)。当然有的机器在箱子刚放入的时候向里面加了一个装置,当罗盘完成加工后,箱子就自动合上了(引入新的语法糖: with open…操作:不需要程序员认为的去书写close()函数)。我们的机子灵敏度很高,即使外面套了好几个箱子,一样能检测到(演示异常处理的方式二:不断往上级传递异常对象,回避问题的方式 )。
勺子听了厂长的介绍,感到很神奇。这时,勺子看到有许多一模一样的小黄人,站成一排。队伍第一个小黄人收到一张纸,上面写着让排名向后的人站在他前面的人的肩上,最后量一下站在一起有多高。小黄人接力一样将将纸条向后传去。最后一个接到纸条后,站在他前面的小黄人肩上,然后再继续叠加,最后竖直站成一条直线。有个会飞的小黄人拿了一个尺子量起高度来(递归调用:不断的对于某操作重复调用执行递归函数:在某个函数中,调用其本身(函数自己调用自己),这个函数整体我们称为递归函数递归函数执行,这个过程中只有进栈(开辟空间),没有出栈,直到最后一次调用完毕了,才逐个出栈; 所以递归函数在执行的时候非常的占用内存资源; 【注意】:如果执行的次数过多了,会产生内存溢出的现象; 【总结】:递归在之后的学习和开发环境下要慎用!!)。厂长告诉勺子,这叫递归法求身高。但是也是有限度的,最多只能站998个人。
勺子听到后,惊讶不已,决定不再找厂长麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值