Как уже отмечали другие, кортеж с элементами в нем не проверяется как False
, что является одной из причин, по которой вы можете захотеть вернуть None
вместо (None, None)
. Однако можно написать кортеж подкласс , который проверяется как False
, даже если в нем есть элементы, переопределяя его метод __nonzero__()
.
class falsetuple(tuple):
def __nonzero__(self):
return False
Тогда вы могли бы вернуть falsetuple((None, None))
, когда нет доступных значений. На самом деле, вы всегда можете вернуть тот же falsetuple
.
Я не обязательно рекомендую вам делать это, на самом деле у меня есть серьезные опасения насчет нарушения этого соглашения, я просто говорю, что правдивость непустых кортежей не обязательно сама по себе причина не возвращать кортеж .