Я думаю, что я полностью понимаю это, но я просто хочу убедиться, потому что я продолжаю видеть, как люди говорят, что никогда не тестируют против True
, False
или None
.
Они предполагают, что процедуры должны вызывать ошибку, а не возвращать False или None. Во всяком случае, у меня есть много ситуаций, когда я просто хочу узнать, установлен флаг или нет, поэтому моя функция возвращает True или False. Есть другие ситуации, когда у меня есть функция, возвращающая None, если не было никакого полезного результата. По моему мнению, ни то, ни другое не является проблематичным, если я понимаю, что никогда не должен использовать:
if foo == True
if foo == False
if foo == None
и вместо этого следует использовать:
if foo is True
if foo is False
if foo is None
поскольку True, False и None являются синглетонами и всегда будут оценивать то, что я ожидаю при использовании "is", а не "==". Я здесь не прав?
В том же духе, будет ли Pythonic модифицировать функции, которые иногда возвращают None, чтобы вместо них выдавать ошибку?
Скажем, у меня есть метод экземпляра get_attr(), который извлекает атрибут из некоторого файла. В случае, когда он обнаруживает, что запрошенный мной атрибут не существует, уместно ли возвращать None? Было бы лучше, чтобы они подняли ошибку и поймали ее позже?