Если вы хотите, чтобы объекты v1, v2, v3
существовали и имело значение по умолчанию в случае ошибки, верните значения по умолчанию самостоятельно. Это упростит вызывающий код, не полагаясь на то, что вызывающий абонент устанавливает их вручную:
def MyFunc(a):
if a < 0:
# can't use a negative value; just return some defaults
return (None, None, None)
return (a+1, a+2, a+3)
С другой стороны, если возврат по умолчанию не подходит и отрицательный аргумент считается серьезной ошибкой, выведите исключение:
def MyFunc(a):
if a < 0:
# sorry, negative values are unacceptable
raise ValueError('cannot accept a negative value')
return (a+1, a+2, a+3)
На третьем возвращении None
иногда может быть предпочтительнее при возврате одного объекта, как в случае с функциями search()
и match()
модуля re
. Он каким-то образом стоит между первыми двумя случаями, потому что сбой сопоставления является ожидаемым результатом, в то время как возвращаемый объект по умолчанию не будет очень полезным в любом случае.