LINUX.ORG.RU

История изменений

Исправление vvn_black, (текущая версия) :

Если очень хочеться, то вот:

def repeat_until(body, condition, *args, **kwargs):
    while True:
        if not condition(*args, **kwargs):
            body(*args, **kwargs)
        else:
            break


def body(*args, **kwargs):
    ...


def condition(*args, **kwargs):
    return ...


repeat_until(body, condition)

только, тогда и весь код надо в декларативном виде.

Upd. Тогда логично будет заменить while на рекурсию.

Исправление vvn_black, :

Если очень хочеться, то вот:

def repeat_until(body, condition, *args, **kwargs):
    while True:
        if not condition(*args, **kwargs):
            body(*args, **kwargs)
        else:
            break


def body(*args, **kwargs):
    ...


def condition(*args, **kwargs):
    return ...


repeat_until(body, condition)

только, тогда и весь код надо в декларативном виде.

Исходная версия vvn_black, :

Если очень хочеться, то вот:

def repeat_until(body, condition, *args, **kwargs):
    while True:
        if not condition(*args, **kwargs):
            body(*args, **kwargs)
        else:
            break


def body():
    ...


def condition():
    return ...


repeat_until(body, condition)

только, тогда и весь код надо в декларативном виде.