Как при ошибке выполнить фунцию заново с комментирование строк?

Например у меня есть функция

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
→ Ссылка