Должен ли я вернуть 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) в вашей ситуации. Опять же, ваш пробег может отличаться, и это зависит от шаблона, используемого вашими абонентами.

  • Как переместить все окно в место на экране (Tkinter, Python3)
  • прерывание клавиатуры с помощью python gtk?
  • Как заставить весь пакет использовать директиву __future__?
  • Как разделить решения для моего кода?
  • создание прокси, отправка сообщений через прокси-приложение
  • Что такое питонический способ создания ошибок
  • Как импортировать FileNotFoundError из Python 3?
  • Использование Python 3.1 и 2.5 вместе
  • Python - лучший язык программирования в мире.