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

首頁 > 學院 > 開發設計 > 正文

python中try、except、finally的執行順序

2019-11-14 17:04:12
字體:
來源:轉載
供稿:網友
?
?
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 中執行,在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 stuff
to return in try
to return in finally
test2Return : 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 : 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執行完畢之后仍返回原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 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得到的結論:

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孝义市| 通辽市| 富川| 健康| 商丘市| 喀喇沁旗| 景谷| 嘉鱼县| 阿拉尔市| 福清市| 宝坻区| 车险| 临猗县| 永康市| 惠安县| 东丰县| 阿合奇县| 凤冈县| 宝应县| 亚东县| 黑龙江省| 荃湾区| 铁岭市| 三原县| 偏关县| 满城县| 延寿县| 多伦县| 甘谷县| 蒙自县| 阜城县| 康平县| 特克斯县| 石泉县| 浏阳市| 石景山区| 保康县| 石渠县| 合江县| 泊头市| 新巴尔虎左旗|