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

Python - лучший язык программирования в мире.