从Python文档
无论是否发生异常,finally子句始终在离开try语句之前执行。如果try子句中发生了异常且未由except子句处理(或在except或else子句中发生),则在执行finally子句后重新引发该异常。 ,finally子句 。一个更复杂的示例(在同一try语句中具有except和finally子句从Python 2.5开始有效):
因此,一旦将try / except块保留为 ,这会将返回值设置为给定值-最终块将 执行,并且应用于释放资源等,而在此使用另一种return会覆盖原始值。
在您的特殊情况下,func1()
return2
和func2()
return 3
,因为这些是在finally块中返回的值。