尝试不同的函数,直到没有异常为止,然后继续



我的项目有三个步骤。第一个和最后一个永远不会改变。第二个需要循环多个函数,直到没有异常,然后转到第三个。

所以基本上:

func1()
func2a() #if exception move to func2b(), if no exception move to func3()
func2b() #if exception move to func2c(), if no exception move to func3()
func2c() #if exception move back to func2a(), if no exception move to func3()
func3() #if executes, break

我尝试了多个try/except,但没有运气

我认为通过将函数打包到列表中,可以很好地实现您想要实现的目标。然后对列表进行迭代,只要出现异常就执行。要获得循环效果(从2c返回2a(,可以使用itertools.cycle:

from itertools import cycle
funcs = [func2a, func2b, func2c, ...]
func1()
for func in cycle(funcs):
try:
func()
except:
continue
else:
break
func3()

我认为这段代码可以帮助您:

f1()
while True:
try:
fa()
break
except:
try:
fb()
break
except:
try:
fc()
break
except:
pass

f3()

或者你可以使用这样一个变量:

func1()
x = 'a'
while True:
if x == 'a':
try:
func2a()
break
except:
x = 'b'
elif x == 'b':
try:
func2b()
break
except:
x = 'c'
else:
try:
func2c()
break
except:
x = 'a'           
func3()

最新更新