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

  • относительный поиск для io.StringIO в python3
  • TypeError: неподдерживаемый тип операндов для -: 'str' и 'int'
  • Python: как использовать именованные переменные из одной функции в других функциях
  • Как найти максимальный продукт двух элементов в списке?
  • iteritems в Python
  • к какой группе относится обратная ссылка, когда используется операция sub ()?
  • Как настроить Python 3 Selenium / Geckodriver для Firefox в Windows 10?
  • Рекурсия: IIR-фильтр с `scipy.lfilter`
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.