Возвращение None
достаточно распространено и работает концептуально.Если вы ожидаете возвращаемое значение и не получаете ничего, это является хорошим признаком того, что что-то пошло не так.
Другой возможный подход, если вы ожидаете вернуть список (или словарь и т. Д.), Этовернуть пустой список или дикт.Это легко проверить на использование if
, потому что пустой контейнер оценивается в False
в Python, и если вы собираетесь его перебирать, вам может даже не понадобиться проверять его (в зависимости от того, что вы хотите сделатьесли функция не работает).
Конечно, эти подходы не сообщают вам , почему функция не сработала.Таким образом, вы можете вернуть экземпляр исключения, например return ValueError("invalid index")
.Затем вы можете проверить определенные исключения (или исключения в целом), используя isinstance()
, и распечатать их, чтобы получить достойные сообщения об ошибках.(Или вы можете предоставить вспомогательную функцию, которая проверяет код возврата, чтобы увидеть, является ли он производным от Exception
.) Вы все еще можете создавать свои собственные подклассы Exception
;вы бы просто возвращали их, а не поднимали.
Наконец, я бы работал над изменением этой нелепой политики, поскольку исключения являются важной частью работы Python, имеют низкие накладные расходы и будут ожидаемы кем угодноиспользуя ваши функции.