请考虑以下情况:

flag = 'a'
while True:
    try:
        # something that might fail
    except:
        # fix failure
        flag = 'b'
    else:
        break

print(flag)


我觉得在这种情况下,一定要有一种更好的方法来找出发生的事情而不使用标志,但是无法想到更“ pythonic”的东西。

最佳答案

您可以将对异常/默认情况的处理拉到exceptelse块中。但是,这是不同的代码,因为现在退出while循环后,您将在每个异常上打印而不是仅打印一次,因此对于外面的try / except / else来说更有意义循环。如果您在循环内,但仍然只希望在循环完成后打印一次(即一次没有引发异常),那么我认为您的方法足够清晰。

while True:
    try:
        # something that might fail
    except:
        # fix failure
        print("b")
    else:
        print("a")
        break

关于python - Python的“标志”概念方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56716412/

10-12 20:14