Python异常处理(pt语句中有return的⼀些情况)
⼀、异常处理语句
try…except…
当try语句出现错误,就会执⾏except语句;
当try语句没出错时,不会执⾏except语句。
try…except…else…
若发⽣了异常,正常抛出异常信息;
若未发⽣异常,执⾏else语句。
try…except…finally…
finally语句是必须要执⾏的
⼆、try except 语句中带有return的⼀些情况
⾸先来看⼀道题⽬:
下⾯代码的输出结果是?
def fun(num, s=0):
try:
print("try")
s += num
return s
except Exception as e:
print(Exception,":", e)
return0
finally:
print("finally")
return666
fun(2)
print("====================")
print(fun(2))
在Pycharm中的运⾏结果为:
python的try和except用法
本题分析:
异常处理语句中,finally语句是⼀定要执⾏的;
第⼀种输出,是由于fun(2)调⽤⽅法,s的返回值确实为2,但是没有打印显⽰出来;
尽管try中带有return语句,但是,当执⾏到try中的return语句时,并不会真正的返回,⽽是将return语句的表达式(本题为变量s)执⾏后,再存到⼀个临时栈当中,接着执⾏finally中的语句,最后才会从临时栈中取出之前的结果返回。
扩展:
在finally语句中,加上 s=100 ,运⾏结果⼜如何呢?
具体代码:
def fun(num, s=0):
try:
print("try")
s += num
return s
except Exception as e:
print(Exception,":", e)
return0
finally:
print("finally")
s =100
return666
fun(2)
print("====================")
print(fun(2))
结果显⽰:
可以看出,结果并没有发⽣改变,这说明了finally中的语句不会影响到 临时栈 中的值,在执⾏finally之前,临时栈中变量s引⽤的值已经确定为2了,执⾏finally语句将s的值变为100,对结果没有产⽣任何影响,执⾏完finally后的输出结果仍为2。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论