Должен ли я вернуть None или (None, None)?

У нас есть метод объекта, который возвращает кортеж города / штата, т. Е. ('Boston', 'MA') . В некоторых действительных обстоятельствах нет действительного города / государства для возвращения. Стилистически, имеет ли смысл возвращать None или двухэлементный кортеж, содержащий (None, None) в этом случае?

2 Solutions collect form web for “Должен ли я вернуть None или (None, None)?”

Я бы вернул None . Если результата нет, зачем возвращать что-то похожее на результат?

Это также легче проверить:

 result = getCity() if result: # do something 

Я бы только вернул (None, None) если было возможно, что только одно из двух значений None (т.е. ('Boston', None) ). В этом случае это было бы более последовательным.

Возвращая только одно значение в исключительных обстоятельствах, вы рискуете сломать икру. Некоторые из ваших абонентов могут выдавать:

 city, state = getCityStateTuple("something") 

В этом случае возврат None приведет к поломке вызывающего абонента с ошибкой:

TypeError: 'NoneType' object is not iterable

Итак, я лично вернусь (None, None) в вашей ситуации. Опять же, ваш пробег может отличаться, и это зависит от шаблона, используемого вашими абонентами.

  • Python3: В чем разница между ключевыми словами и встроенными?
  • error_callback в multiprocessing.Pool apply_async в Python 2?
  • Замена итератора вывода C ++ STL с генератором Python
  • Отсутствуют значения веб-страницы при очистке данных с помощью BeautifulSoup python 3.6
  • django.core.exceptions.ImproperlyConfigured
  • Python 3 - при преобразовании из ints в 'bytes', а затем их конкатенации (для последовательной передачи)
  • Python dict как создать ключ или добавить элемент к ключу?
  • Итерирование и обновление списка в python
  • TypeError: только целочисленные скалярные массивы могут быть преобразованы в скалярный индекс
  • BrokenPipeError в Python
  • PyCrypto - Как работает вектор инициализации?
  • Python - лучший язык программирования в мире.