finally和return哪個先執(zhí)行 python的try方法中的else和finally的區(qū)別?
python的try方法中的else和finally的區(qū)別?如下所示:(R輸出:(R)在try中引發(fā)一個異常,它將在exception中立即執(zhí)行。當(dāng)在異常中遇到return時,將強制在finally中
python的try方法中的else和finally的區(qū)別?
如下所示:(R
輸出:(R)在try中引發(fā)一個異常,它將在exception中立即執(zhí)行。當(dāng)在異常中遇到return時,將強制在finally中執(zhí)行。在finally中遇到return時,會返回輸出:try中沒有拋出異常,因此不會在exception中執(zhí)行,但是在try中遇到return時,會立即強制在finally中執(zhí)行,并在finally中返回test1和test2的結(jié)果,無論是在try中還是except中,當(dāng)遇到return時,只要設(shè)置了finally語句,當(dāng)前return語句就會被中斷,執(zhí)行就會跳到finally。如果在finally中遇到return語句,則直接返回,而不是跳回try/excpet中中斷的return語句;當(dāng)在except和try中遇到return時,return的值將被鎖定,然后跳轉(zhuǎn)到finally。如果finally中沒有return語句,則finally執(zhí)行后返回原來的返回點,并返回之前鎖定的值(即finally中的動作不影響返回值)。如果finally中有return語句,那么finally中的return語句將被執(zhí)行。R輸出test5的結(jié)論:在一個循環(huán)中,在跳出循環(huán)之前,它將首先轉(zhuǎn)到finally execute,然后開始下一輪循環(huán)。沒關(guān)系。直接總結(jié)規(guī)則。
根據(jù)上述規(guī)則,讓我們看看下面的列表
輸出是40。有兩個retrun,下面的一個將覆蓋上面的一個,所以它將是40
輸出是30。最后,沒有回報。雖然a=40,但return是在之前執(zhí)行的。當(dāng)前方法體的返回類型的空間已經(jīng)在堆棧中打開了30個(值的副本)。因此,由a=40操作的變量a不影響存儲在新控制回路中的30。
輸出為1。StringBuilder是引用類型。Return將復(fù)制引用地址。因此操作生成將影響返回的結(jié)果。
希望以上內(nèi)容能對您有所幫助。