国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對python中的try、except、finally 執行順序詳解

2020-02-16 01:11:54
字體:
來源:轉載
供稿:網友

如下所示:

def test1():  try:   print('to do stuff')   raise Exception('hehe')   print('to return in try')   return 'try' except Exception:   print('process except')   print('to return in except')   return 'except' finally:   print('to return in finally')   return 'finally'test1Return = test1()print('test1Return : ' + test1Return)

輸出:

to do stuffprocess exceptto return in exceptto return in finallytest1Return : finally

在 try 中 raise一個異常,就立刻轉入 except 中執行,在except 中遇到 return 時,就強制轉到 finally 中執行, 在 finally 中遇到 return 時就返回

def test2():  try:   print('to do stuff')   print('to return in try')   return 'try' except Exception:   print('process except')   print('to return in except')   return 'except' finally:   print('to return in finally')   return 'finally'test2Return = test2()print('test1Return : ' + test2Return)

輸出:

to do stuffto return in tryto return in finallytest2Return : finally

這里在 try 中沒有拋出異常,因此不會轉到 except 中,但是在try 中遇到return時,也會立即強制轉到finally中執行,并在finally中返回

test1和test2得到的結論:

無論是在try還是在except中,遇到return時,只要設定了finally語句,就會中斷當前的return語句,跳轉到finally中執行,如果finally中遇到return語句,就直接返回,不再跳轉回try/excpet中被中斷的return語句

def test3():  i = 0 try:   i += 1 print('i in try : %s'%i)   raise Exception('hehe') except Exception:   i += 1 print('i in except : %s'%i)   return i   finally:   i += 1 print ('i in finally : %s'%i )print('test3Return : %s'% test3())

輸出:

i in try : 1i in except : 2i in finally : 3test3Return : 2def test4():  i = 0 try:   i += 1 return i  finally:   i += 1 print ('i in finally : %s'%i )print('test4Return : %s' % test4())

輸出

i in finally : 2test4Return : 1

test3和test4得到的結論:

在except和try中遇到return時,會鎖定return的值,然后跳轉到finally中,如果finally中沒有return語句,則finally執行完畢之后仍返回原return點,將之前鎖定的值返回(即finally中的動作不影響返回值),如果finally中有return語句,則執行finally中的return語句。

def test5():  for i in range(5):   try:     print('do stuff %s'%i)     raise Exception(i)   except Exception:     print('exception %s'%i)     continue finally:     print('do finally %s'%i)test5()

輸出

do stuff 0exception 0do finally 0do stuff 1exception 1do finally 1do stuff 2exception 2do finally 2do stuff 3exception 3do finally 3do stuff 4exception 4do finally 4            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻阳| 抚宁县| 马鞍山市| 来安县| 富平县| 横峰县| 长泰县| 永春县| 兴仁县| 诏安县| 化隆| 黎平县| 永丰县| 陆川县| 义马市| 英德市| 禄劝| 蓬安县| 东兰县| 北宁市| 灵武市| 万年县| 邯郸市| 海林市| 郸城县| 盐池县| 昌邑市| 宁乡县| 霍林郭勒市| 扎赉特旗| 无为县| 刚察县| 襄汾县| 北流市| 北票市| 淮南市| 呼和浩特市| 阿巴嘎旗| 栖霞市| 晋江市| 华容县|