3 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
因?yàn)楸WC可以執(zhí)行finally語(yǔ)句(因此,假定沒(méi)有斷電或Python無(wú)法控制的任何事情)。這意味著在函數(shù)可以返回之前,它必須運(yùn)行finally塊,該塊返回一個(gè)不同的值。
在Python文檔狀態(tài):
當(dāng)在try ... finally語(yǔ)句的try套件中執(zhí)行return,break或Continue語(yǔ)句時(shí),finally子句也會(huì)在“出路”上執(zhí)行。在finally子句中,continue語(yǔ)句是非法的。(原因是當(dāng)前實(shí)施存在問(wèn)題-將來(lái)可能會(huì)取消此限制)。
這意味著,當(dāng)您嘗試返回時(shí),將finally調(diào)用該塊,并返回其值,而不是原來(lái)的值。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
執(zhí)行順序?yàn)椋?/p>
嘗試阻止所有正常完成->最終阻止->函數(shù)結(jié)束
嘗試運(yùn)行塊并進(jìn)入異常A->最終阻塞->函數(shù)結(jié)束
嘗試塊返回值并調(diào)用返回->最終阻止->彈出返回值->函數(shù)結(jié)束
因此,finally塊中的任何返回都將提前結(jié)束步驟。

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
因?yàn)樵?code>return調(diào)用該語(yǔ)句時(shí),Python會(huì)檢查是否finally
需要執(zhí)行任何打開(kāi)的子句(請(qǐng)參見(jiàn)上面的引用)。
添加回答
舉報(bào)