问题描述
我的项目有3个步骤。第一个和最后一个永远不会改变。第二个需要遍历多个功能,直到没有异常,然后再转到第三个。
所以基本上:
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
,但没有运气
解决方法
我认为您可以通过将功能打包到列表中来轻松实现目标。然后,只要有例外,就在列表上进行迭代并执行。要获得循环效果(从2a
返回到2c
,可以使用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()