В общем, скажем, у вас есть метод, подобный приведенному ниже.
def intersect_two_lists(self, list1, list2):
if not list1:
self.trap_error("union_two_lists: list1 must not be empty.")
return False
if not list2:
self.trap_error("union_two_lists: list2 must not be empty.")
return False
#http://bytes.com/topic/python/answers/19083-standard
return filter(lambda x:x in list1,list2)
В этом конкретном методе, когда обнаружены ошибки, я бы не хотел возвращать пустой список в этом случае, потому что это мог быть реальный ответ на этот вызов определенного метода, я хочу вернуть что-то, чтобы указать, что параметры были неправильными. Поэтому я вернул False при ошибке в этом случае, а список в противном случае (пустой или нет).
Мой вопрос в том, какова наилучшая практика в таких областях, а не только для списков? Верните все, что захотите, и убедитесь, что я документирую его для чтения пользователем.:-) Что делают большинство из вас:
- Если при успехе вы должны были вернуть True или False, и вы поймаете ошибку?
- Если при успехе вы должны были вернуть список, и вы поймали ошибку?
- Если при успешном завершении вы должны были возвратить дескриптор файла и вы поймали ошибку?
- et cetera