考虑以下情况:
flag = 'a'
while True:
try:
# something that might fail
except:
# fix failure
flag = 'b'
else:
break
print(flag)
我觉得在这种情况下必须有更好的方法来找出发生了什么而不使用标志,但想不出任何更“pythonic”的方法。
请您参考如下方法:
您可以将异常/默认情况的处理拉到 except 和 else block 中。但是,这是不同的代码,因为现在您将在退出 while 循环后打印每个异常,而不是只打印一次,因此这对于 try 更有意义>/except/else 在循环之外。如果您在循环内但仍然只想在循环完成时打印一次(即一旦没有引发异常),我认为您的方法足够清楚。
while True:
try:
# something that might fail
except:
# fix failure
print("b")
else:
print("a")
break
