Как при ошибке выполнить фунцию заново с комментирование строк?
Например у меня есть функция
def func():
try:
print('1')
print('2')
print('3')
except Exception:
func()
Как мне сделать что бы при исключении функция выполнялась заново но комментировала print('1')
Ответы (2 шт):
Автор решения: vadim vaduxa
→ Ссылка
def fn1(a):
raise UserWarning
return a
def fn2(a):
return a
def fn3(a):
raise UserWarning
return a
def fn4(a):
return a
def func(fn, ar, r=0):
for i in range(r, len(fn)):
try:
yield fn[i](ar[i])
except:
yield from func(fn, ar, r=i+1)
return
if __name__ == '__main__':
for a in func([fn1, fn2, fn3, fn4], ['1', '2', '3', '4']):
print(a)
out:
2
4
Автор решения: CrazyElf
→ Ссылка
Не очень понятно, чего вы хотите, но если по простому, то можно флаг выставить и проверять:
def func():
for flag in [True,False]:
try:
if flag:
print('1')
print('2')
print('3')
if flag:
raise Exception
return
except Exception:
pass
func()
Просто не очень понятно, какое поведение функции вы хотите, если и во второй раз произойдёт exception.
1
2
3
2
3