好吧,所以我的情况是必须在try语句中按特定顺序执行序列,如果任何步骤失败,则必须返回返回值。还有一个最终声明,我执行某种“回到安全状态 - 如果 - 任何 - 失败”'也必须按特定顺序执行的序列。对于每个步骤(try和finally语句),如果失败,则必须记录某种消息,原因是它失败并且此时必须停止执行。最终语句中的序列返回值对我来说并不重要(我只对try语句的返回值感兴趣)。这就是我决定处理它的方式:
def whatever():
ret_val = True
try:
x = foo()
if isinstance(x, str):
print "%s" % x
ret_val = False
return
y = bar()
if isinstance(y, str):
print "%s" % y
ret_val = False
return
finally:
a = safe_state_step_1()
if isinstance(a, str):
print "%s" % a
return ret_val
b = safe_state_step_2()
if isinstance(b, str):
print "%s" % b
return ret_val
return ret_val
我想知道是否有更多的pythonic' /'更聪明的'处理这种情况的方式?