Какой стиль возврата «лучше» для метода, который может вернуть None? - PullRequest
1 голос
/ 15 июня 2010

У меня есть метод, который будет возвращать объект или None, если поиск не удастся.Какой стиль из следующего лучше?Другим выбором будет return haystack[needle] if needle in haystack else None, но я не уверен, что это лучше.

Ответы [ 3 ]

10 голосов
/ 15 июня 2010

Для этого конкретного примера, похоже, что метод dict get является наиболее кратким:

def get_foo(needle):
    haystack = object_dict()
    return haystack.get(needle)

Как правило, в Python люди предпочитают попробовать / кроме проверки чего-либо сначала - см. Запись EAFP в глоссарии . Обратите внимание, что многие функции «проверки на членство» используют исключения за сценой.

Я не буду начинать огненную войну с относительных достоинств множественных возвратов или альтернатив:)

2 голосов
/ 15 июня 2010

если оба делают одно и то же, выберите тот, который вам нравится больше всего, и который будет более читабельным - мне нравится второй, но оба хороши.

(возможно, один, если это быстрее, чем другойодин - так что, если предварительное исполнение реально важно, протестируйте его и выберите более быстрое)

0 голосов
/ 15 июня 2010

На каждом языке, который я использовал, первая версия является совершенной.Исключения в основном бывают скрыты от многих подобных проблем, поэтому я не использую их, если смогу избежать этого.Я не знаю насчет Python, но во многих других языках создание исключения, которое вы собираетесь выбросить на следующей строке, сопряжено с большими затратами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...