Я не программист на Python (только начинаю изучать язык), но это похоже на бесконечное обсуждение того, когда возвращать ошибку или выбрасывать исключение, и дело в том, что (конечно, это всего лишь мнение) это зависит.
Исключения следует использовать для исключительных условий, и как таковые перемещать проверки для редких ситуаций за пределы основного блока кода. Они не должны использоваться, когда не найденное значение является общим условием (подумайте о запросе левого дочернего элемента дерева, во многих случаях - все листья - оно будет нулевым). Существует еще одна третья ситуация с функциями, которые возвращают наборы значений, где вы можете просто захотеть вернуть действительный пустой набор, чтобы упростить код.
Я считаю, что, следуя вышеприведенному совету, код становится более разборчивым. Когда ситуация редкая, вам не нужно беспокоиться о нулевом значении (будет вызываться исключение), поэтому менее используемый код перемещается из основного блока.
Когда нулевое значение является допустимым возвращаемым значением, обработка выполняется в основном потоке управления, но это хорошо, поскольку это обычная ситуация и как часть основного алгоритма (не следует нулевого ребра в графе ).
В третьем случае при запросе значений из функции, которая может не возвращать значений, возврат пустого набора упрощает код: вы можете предположить, что возвращенный контейнер существует, и обработать все найденные элементы без добавления дополнительных проверок в коде .
Опять же, это просто мнение, но, будучи моим, я склонен следовать ему:)