return键盘上哪个键(键盘true是哪个按键)

2023年8月3日18:23:17return键盘上哪个键(键盘true是哪个按键)已关闭评论

作者:麦叔

来源:麦叔编程

一直以来,我的理解是:

return语句是函数的终结,一旦遇到return,函数马上就结束返回了。

直到认真学习了try...except...finally异常处理才发现并不总是这样的。但这个问题你真的理解吗?

return语句和finally语句到底谁先执行呢?

可能没有你想象的那么简单!

finally语句

来看这段代码例子:

defplay_numer():number_list = []whileTrue:
print(-----------------)try:
number = input(输入一个数字:)
print(int(number)/2)ifnumber ==886:returnexceptExceptionase:
print(f出错了:{e})finally:
number_list.append(number)
print(number_list)

play_numer()

执行结果如下:

-----------------输入一个数字:123
61.5[123]-----------------输入一个数字:321
160.5[123,321]-----------------输入一个数字:886
443.0[123,321,886]

从结果可以看出,就算遇到了886,也在退出之前成功打印了包含886的列表。这似乎说明:

finally语句先执行,然后再执行return语句。

推翻认知的例子

我们现在修改一下代码,会推翻之前的理解:

defplay_numer():number_list = []whileTrue:
print(-----------------)try:
number = input(输入一个数字:)
print(int(number)/2)ifnumber ==886:returnnumber_list.append(return)exceptExceptionase:
print(f出错了:{e})finally:
number_list.append(number)
print(number_list)

play_numer()

代码几乎和前面一样,唯一的区别是在return语句中执行了这个操作:number_list.append(return)。

看看打印结果:

-----------------输入一个数字:123
61.5[123]-----------------输入一个数字:321
160.5[123,321]-----------------输入一个数字:886
443.0[123,321,return,886]

完全一样的输入,看看最后一条打印结果:字符串return在886之前被加入到了列表,这似乎又说明:

return语句在finally之前执行,和前面的结论相反。

结论

这个问题的关键在于认识到:

return语句包含两部分,一部分return关键字后的表达式,比如number_list.append(return),另一部分是return本身,也就是退出函数的操作。

所以正确的顺序是:

return表达式,finally语句块,return操作

懵懂先生