Каков наилучший способ выхода из функции (которая не имеет возвращаемого значения) в python до ее завершения (например, проверка не пройдена)? - PullRequest
120 голосов
/ 31 мая 2011

Давайте предположим итерацию, в которой мы вызываем функцию без возвращаемого значения. То, как должна вести себя моя программа, объясняется в этом псевдокоде:

for element in some_list:
    foo(element)

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return None
    do much much more...

Если я реализую это в python, меня беспокоит, что функция возвращает None. Есть ли лучший способ для «выхода из функции, которая не имеет возвращаемого значения, если проверка не проходит в теле функции»?

Ответы [ 3 ]

223 голосов
/ 31 мая 2011

Вы можете просто использовать

return

, что точно так же, как

return None

Ваша функция также вернет None, если выполнение достигнет конца тела функции, не нажимаяreturn заявление.Возврат ничего не означает возвращение None в Python.

15 голосов
/ 31 мая 2011

Я бы предложил:

def foo(element):
    do something
    if not check: return
    do more (because check was succesful)
    do much much more...
10 голосов
/ 31 мая 2011

вы можете использовать оператор return без каких-либо параметров, чтобы выйти из функции

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return
    do much much more...

или вызвать исключение, если вы хотите получить информацию о проблеме

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        raise Exception("cause of the problem")
    do much much more...
...