前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 哈士奇 。(我真的养了一只哈士奇)
个人主页:渴望力量的哈士奇主页
如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
如果感觉博主的文章还不错的话,还请不吝关注、点赞、收藏三连支持一下博主哦
人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
系列专栏::
Python全栈系列 - [更新中] ➡️➡️➡️ 【 本文在该系列】
网安之路系列
网安之路踩坑篇
网安知识扫盲篇
Vulhub 漏洞复现篇
Shell脚本编程篇
Web攻防篇 ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
渗透工具使用集锦 ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
⭐️ 点点点工程师系列
测试神器 - Charles 篇
测试神器 - Fiddler 篇
测试神器 - Jmeter 篇
自动化 - RobotframeWork 系列
自动化 - 基于 JAVA 实现的WEB端UI自动化
自动化 - 基于 MonkeyRunner 实现的APP端UI自动化
珞 2019年之前学习Python留下的乱七八糟系列
| 欢迎持续关注 |
finally 与 return 的执行顺序else 与 return 的执行顺序总结
最终想了想,还是把这个章节单独拎出来,虽然字数不多。
在代码中,存在return也应当执行finally;
存在return时,else是不执行的;
无return时,else正常执行;
如果发生异常,则else也不执行
示例代码如下:
class Test(object):
def division(self, num1, num2):
try:
if num2 == 0:
return '除数不能为0'
avg = num1 / num2
return avg
except Exception as e:
print('ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(6, 0))
# >>> 执行结果如下:
# >>> FINALLY
# >>> 除数不能为0
注意:即使有return也要是会执行finally的,而且是在return之前执行它。那么最后的结果为。
else 与 return 的执行顺序示例代码如下:
class Test(object):
def division(self, num1, num2):
try:
avg = num1 / num2
return avg
except Exception as e:
print('ERROR')
else:
print('No ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(6, 2))
# >>> 执行结果如下:
# >>> FINALLY
# >>> 3.0
注意:有return时else是不执行的。所以执行结果如上面的示例代码
那么 无 return 时,执行结果又怎样?
class Test(object):
def division(self, num1, num2):
try:
avg = num1 / num2
# return avg
except Exception as e:
print('ERROR')
else:
print('No ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(6, 2))
# >>> 执行结果如下:
# >>> No ERROR
# >>> FINALLY
# >>> None
从运行结果我们得出结论:无return时,正常执行else 。
如果是发生异常的情况下, else 也是不会执行的。代码示例如下:
class Test(object):
def division(self, num1, num2):
try:
avg = num1 / num2
return avg
except Exception as e:
print('ERROR')
else:
print('No ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(4, 0))
# >>> 执行结果如下:
# >>> ERROR
# >>> FINALLY
# >>> None
总结
1、finally 与 return 的执行 顺序;即使有 return 也要执行 finally 的, 而且是在 return 之前执行它。
2、else 与 return 的执行顺序;有 return 时, else 是不执行的。无 return 时, 正常执行的 else 如果发生异常则不会继续执行else。



