粉丝2141获赞6112

好,我们再学习一个语句,叫做 try escaped else family 语句。 这个也就是干嘛呢?首先上面执行的好好的,是吧?然后呢,你进行,你遇到了踹他,就先执行踹里头的那种,然后判断他是否报了错,如果报错的话, 那就执行 excuse 中的内容,那如果没报错呢?就执行哎呦,死里头的内容。然后最后呢,不管你有没有报错,他会,他都会执行 fannaly 里头的内容。好,那我们现在用代码来演示一下, 在这里我们按 f 对他进行一个复制。这里呢,我们要学的是第四课,叫做 try escaped。 呃,这个叫 try escaped, 然后 else, 最后是 friendly。 决定好,我们继续往下写。刚才不是解决了这两下吗?接着,接着我们要解决什么呢?接着我们还要一来一个 l, 这里这样吧, 这里我们来一个,叫做 结果叫做 r r 这个里头放的是 in 特 a 除以 in 特 b。 哎, in 特 a 除以 in 特 b 的得数。 呃,哎,等一下,这里这里 else 在 printer 数数以下得数, 得数为 的数为 r, 得数为 r。 然后我们给他设置一下 ship, 他们看 这里,我们运行一下。呃,这里我们运行一下。首先请输入被除数,请输入除数,而得数为。 这么多啊,我这个书有点过分了,他用二进制算,算的可能不是很准确,你看这零头还出来一个五。嗯,所以呢,没关系啊, 我们只不过是看这个代码啊,那这个请输入被除数,我们先输一个十,请输入除数,我输一个二,得数为五点零。那这里还看不出什么来 是吧?啊,这里还看不出什么来,反正是在我们运行的时候是看不出什么来,但是我们先这里第八个,我们调试一下,我们点步入 请输入被除数卡了,卡了, 请输入被除数,我们来输一个十。请输入除数,我们来输入一个二,接着呢? 他给我直接跳过了,是不是?没关系,反正我们知道这里有一个 r 变量就完了,好在我们这里点一下运行 好,点一下运行他就好了。好,那我们继续看啊,这里反正我们知道这里有个变量就行了。那接着最后还有一个什么呀?还有个叫做翻的类的东西,翻的类就是我不管出现没出现罢, 我都要执行的。这里来一个 finally f i n a l l y finally 啥意思?最后的意思是不是 print? print 什么呢? printer 出出一个, 谢谢您的参与。礼貌点,谢谢您的 的,谢谢您的参与。 how? 运行下,请输入被除数,我们输一个十。请输入一个除数,我们输一个四,然后得输于二点四,谢谢您的参与。是不是?这里我们不管有没有,他都给我们说了,他都给我运行了,是不是?那我们再来看, 请输入被除数十,请输入十数 六,呃,得数为这个啊,谢谢您的参与,那是不是?那我们谢谢您的参与。我们现在是没有 又出 bug 的情况下,那出了 bug 呢?十零除数不能为零哦,他警告你了一下,是不是?然后谢谢你的参与结束输入了,他同样输出了,谢谢您的参与。 那同样,那要是我们的这个,要是我们的这个第二个错误叫做歪留一揉呢?歪留一揉,谢谢您的参与,也会给他进行一个输出, 那这个就是今天我们讲的这个叫 try escaped else finally 句。

大家应该都知道,在 python 里面,踹语句通常都是跟 except 搭配起来使用的,但是大家别忘了,踹语句的完整体里面还有一个 finally, 这个 finally 的用处就是无论踹语句是否出现异常,都会执行里面的语句。 那么现在问题来了,如果这个 try 和 find 里碰到了这个 return, 那么这个函数它的返回结果是踹里面的 return 还是 finally 里面的 return? 大家可以暂停一下想一下结果, a few moments later ok, 我们现在运行一下看一下效果, 可以看到最终结果是返回的 finally 里面的 return, 直接把串里面的 return 给忽视掉了。我们再看第二个例子,这个例子里面呢,我就没有在 finally 里面写 return 了,我只是写了 print。 大家知道一个函数里面,如果你没有直接写这种 return 什么的话,他默认是返回 浪的,我们看一下结果会不会是返回一个浪呢?可以看到结果里面并没有出现浪,并且还返回了踹语句里面的 return, 那也就是翻的那里面,这个时候他并没有覆盖掉踹里面的 return。 所以最终我们可以得出一个结论,如果这个翻的那里面,我们显示的直接写了 return 什么什么的话, 它会覆盖掉踹语句里面的 return, 但是如果我们在翻的里面没有写 return 的话,那么翻的里面的语句还是会先执行,再去返回踹里面的 return, ok, 如果这一期视频对大家有帮助的话,别忘了一键三连,谢谢大家。



异常机智, finally 结构, 好,接下来我们讲一下一个新结构叫 finally, 就说在我们的呃,前面讲的这个什么 try, except, 后面再增加一个什么 finally 结构? find 那一块呢?语句块,它有什么用呢?它是用来告诉我们无论发生异常与否,它里的内容都会被执行, 通常可以干嘛呢?可以用来帮助我们释放一些在踹这个块中打开那些资源啊,比较典型的就是我们前面给大家学的 io 流里边, io 流里边我们都知道,我们去打开一个文件,对吧?后面呢是必须要关闭的,不关 这个资源就一直在那开着,是不是就甭不管他这个执行过程中呢,有没有异常,我都要把它关掉,所以这个时候呢,特别适合在班里,班里面放啊,所以是这样的结构,那我们看一看啊,所以呢,大家看这看下面这个小程序啊, 这程序是什么呢?它包含了我们的 try, 包含了我们的 except, 对吧?包含了我们的 alles, 包含了我们的翻译,它的结构是这样的,结构,首先 执行我们的这个踹结构,对吧?程序来这执行, 如果发生了一场,发生了一场,则跑到我们什么 except, 看到了没有?如果没有发生异常,我们就跑哪去啊? als, 好吧,然后呢?不管直行弯以后呢?就是甭管啊,这个异常有没有发生,我下面都有一个,什么都有一个, find 里,在这,在这等着你,对吧?直行弯有,如果有异常,你在这直行完异常了啊,处理完异常了,你也需要在 find 里边来, 如果是没有异常,你执行完 ios 语句了,你也需要来我这,当然这个 ios 语句呢,不是必须的啊,好吧,不是每个每个 try except 的结构里边都有 ios, 所以大家看是这样的一个结构啊, try out of love except, except 是我们的 house, 这是我们的什么 find, 好吧,他是这样的结果,然后执行完之后呢,好程序的干嘛继续往下执行? 大家看懂了吗?好,再强调一遍,这 airs 不是必须的,根据你自己情况做啊,有的时候需要,有的时候不需要,然后呢,我们这呢是为了,呃,就为了让大家把这个我们刚刚学的所有的结构放到这,所以呢加了 airs, 那么来啊,咱们做测试, 大家看,我在这呢给大家写了一个。 好,那写好了啊,咱们再敲一遍,还是刚刚那个代码,基本上我是,呃就从那粘过来的,粘过来的没什么变化。然后, 哦,我用的是这个零五,还是新建的 a 六吧, 代码几乎一模一样,没什么区别。 是加了一个 fine 叫对吧,大家看,呃, try exception else fine 对不对?然后结束,然后我看啊,如果遇到异常,大家看这儿啊, 十零会有异常,对不对?好,大家看打印异常,打印完之后呢, l 显示不会执行了,是不是进入我们我们的班内了, 看到没有有异常,最后呢也需要执行我们这个翻译这个句,好吧,然后那个大家呢,把这个结构理解一下啊,我这不敲,但是你那需要敲一下。 还有一个比比较典型的,就是我们前面给大家讲过的啊,讲过的这个处理这个 i o 流打开文件的时候,对吧? 这个是比较典型的,我们再复习一下啊,前段时间我们讲过了, 好,然后就我们有这么几,有,有这么几个代码,首先 open, 对吧?打开一个文件,然后我们要打开一个地盘,下面这个文件干嘛呢?我要读啊,采用读模式, 然后呢,内容是什么?就是我们点 read, 对吧?或者是 read, 或者这个,这个读一行,读一个 like 都行啊,读进来之后呢,把它打印一下, 看到了没有?没有,没,没做什么复杂的操作啊,但是我们知道这个过程中呢是可能干嘛的,如果你有这个文件当然可以读出来,对吧?如果你没没有这个文件呢?他就会爆异常,对不对? 看到没有? note such 什么? file out, there 对吧? file not fine, 还有这样的这样的异常,所以呢,我们在这呢需要通过什么?当然了,还需要,最后还需要干啥呢?还需要释放我们的资源,对吧? close, 那么这时候呢,我们需要通过这个 try, 呃, try except 对吧?好,这 是我们的。 好,然后呢? accept, 打印我们的音响是吧?按键没找到,看懂了没有?然后呢?这个 finding out, 我们写写什么? back down, 准备 after close, 然后在这执行,告诉我程序执行结束。 看到了没有?这儿 f 叫 close, 而意味着什么呢?意味着你有异常没?没异常的时候呢?我这儿也需要关闭资源,有异常干嘛?我也要关闭啊,这是正常的啊, 如果有异常的,我也会进入这来关闭资源, 大家看这有呃,哦,这是没异常啊,这是没异常情况,他也进来这关闭,对吧?然后,然后如果有异常呢? 好,大家看文件没找到,那么他是不是也跑到这来了啊?看到没有?他也跑到这来,来关闭我们的资源, 看懂了没有?不过大家注意到了没有?这个地方执行到这这以后,大家看我在这执行的时候是文件未找到,也就是说我在这实际上 oppo 的时候呢也有异常, 然后跑到这来,看到没有?大家注意啊,在这在这,因为我们这是必须执行的,所以你在这执行的时候呢也会跑,不好意思,为什么?因为这个 f 不存在, 没问题,是吧?那它打开以后呢?抛一场这个这个 f f 这个边呢?没建立成功,所以在这呢?呃,这这行,大家看行十二,这,哎,看到没有?行十二,这也抛一场在这, 所以呢,因为这个这个异常,你有有没有串开始啊?有没有这个串进行处理啊?没处理,所以呢后面的程序不值钱了,大家看到没有?这个程序后面程序没有往下走了,所以呢,如果你要写的想完善一点的话,在这还还得干嘛? 还得穿,看到了没有?还得穿一下啊? 好,大家看这时候是不是正常结束了程序看懂了没有?这时候呢我们就正常的这个这个结束了程序,这是一个呃相对比较完善的程序, 要不然的话他执行到这了,如果你这不做处理的话,跑到这的议程没有被处理,那我们这个,呃没有对那个下不进去,那这个程序呢?到这就结束了, 好吧,加了之后呢,我们程序员就可以干嘛正常的继续往下走,对吧? 好,大家呢把这个 fending 在这呢起起作起啊,体验一下。