溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中try、except、finally執(zhí)行順序的示例分析

發(fā)布時間:2021-08-26 10:33:19 來源:億速云 閱讀:108 作者:小新 欄目:開發(fā)技術

小編給大家分享一下python中try、except、finally執(zhí)行順序的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

如下所示:

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 stuff
process except
to return in except
to return in finally
test1Return : finally

在 try 中 raise一個異常,就立刻轉入 except 中執(zhí)行,在except 中遇到 return 時,就強制轉到 finally 中執(zhí)行, 在 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 stuff
to return in try
to return in finally
test2Return : finally

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

test1和test2得到的結論:

無論是在try還是在except中,遇到return時,只要設定了finally語句,就會中斷當前的return語句,跳轉到finally中執(zhí)行,如果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 : 1
i in except : 2
i in finally : 3
test3Return : 2

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

輸出

i in finally : 2
test4Return : 1

test3和test4得到的結論:

在except和try中遇到return時,會鎖定return的值,然后跳轉到finally中,如果finally中沒有return語句,則finally執(zhí)行完畢之后仍返回原return點,將之前鎖定的值返回(即finally中的動作不影響返回值),如果finally中有return語句,則執(zhí)行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 0
exception 0
do finally 0
do stuff 1
exception 1
do finally 1
do stuff 2
exception 2
do finally 2
do stuff 3
exception 3
do finally 3
do stuff 4
exception 4
do finally 4

test5得到的結論:

在一個循環(huán)中,最終要跳出循環(huán)之前,會先轉到finally執(zhí)行,執(zhí)行完畢之后才開始下一輪循環(huán)

以上是“python中try、except、finally執(zhí)行順序的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI