Если вы напишите:
if foo:
# ...
elif bar:
# ...
# ...
тогда читатель может задаться вопросом: а что если ни foo
, ни bar
не соответствует действительности? Возможно, вы знаете, исходя из своего понимания кода, что это должен быть случай либо foo
, либо bar
. Я бы предпочел увидеть:
if foo:
# ...
else:
# at this point, we know that bar is true.
# ...
# ...
или
if foo:
# ...
else:
assert bar
# ...
# ...
Это дает читателю понять, как вы ожидаете, что контроль будет проходить, не требуя от читателя глубоких знаний о том, откуда foo
и bar
.
(в исходном случае вы все еще могли бы написать комментарий, объясняющий, что происходит, но я думаю, что тогда я задаюсь вопросом: «Почему бы просто не использовать предложение else:
?»)
Я думаю, дело не в том, что вы не должны использовать else:
; скорее, предложение и else:
может позволить вам написать неясный код , и вы должны попытаться распознать, когда это происходит, и добавить небольшой комментарий, чтобы помочь любым читателям.
Что верно для большинства вещей в языках программирования, правда: -)