Недавно я смотрел видео о хороших методах программирования, где ведущий много говорил об опасности использования голых условных выражений , в основном некапсулированных условных выражений. Примером является то, что что-то вроде этого предположительно предпочтительнее, чем условие, явно записанное в операторе if
.
foo = 3 <= len(bar) < 7 and some_other_condition
if foo:
do_something
(...)
С этой информацией было бы логично применить его к циклам while таким же образом.
foo = 3 < len(bar) < 7 and some_other_condition
while foo:
do_something
update(some_other_condition)
(...)
Проблема здесь в том, что условное выражение было определено вне тела элемента while l oop, и оно не обновляется, даже если условие явно изменяется внутри l oop.
Другой вариант - определить функцию, которая заботится об условном выражении, и вызывать ее каждый раз, когда вы выполняете итерацию. Но это (по крайней мере для меня) кажется ненужной сложностью ради, казалось бы, чистого кода. Нет ли способа сделать это, чтобы не требовалось определять внутреннюю функцию для каждого сложного условия?
def foo(x):
return 3 < len(x) < 7 and some_other_condition
while foo(bar):
do_something
update(some_other_condition)
(...)
Мне не удалось найти что-либо в inte rnet в topi. c. Итак, имея это в виду, я спрашиваю вас, каков правильный способ инкапсуляции условных выражений в Python?