Как оптимизировать код c проверкой len() нескольких переменных?
Есть часть кода:
if len(end_test) > 0:
if len(marking) > 0:
if len(start_test) > 0:
if len(object_trials) > 0:
if len(data_protocol) > 0:
if len(namber_protocol) > 0:
if len(data_application) > 0:
if len(namber_application) > 0:
pass
else:
pass
else:
pass
else:
pass
else:
pass
else:
pass
else:
pass
else:
pass
else:
pass
Который проверяет длину переменно и если она не равна нулю проверяет другую переменную. Вопрос как и можно ли оптимизировать данный код??? В else будет писаться активация функции с выводом messageBox.
Ответы (2 шт):
Автор решения: GrAnd
→ Ссылка
Можно избавиться от "лесенки" просто перевернув условия:
if (len(end_test) <= 0 or len(marking) <= 0 or len(start_test) <= 0 or
len(object_trials) <= 0 or len(data_protocol) <= 0 or len(namber_protocol) <= 0 or
len(data_application) <= 0 or len(namber_application) <= 0
):
self.message()
else:
pass
Автор решения: extrn
→ Ссылка
sequences = (
end_test, marking, start_test, object_trials, data_protocol,
namber_protocol, data_application, namber_application,
)
if all(len(x) > 0 for x in sequences):
# все непустые
else:
# хотя бы одна пустая
хотя в большинстве случаев будет достаточно
if all(sequences):
# все непустые
else:
# хотя бы одна пустая
потому, что пустая последовательность обычно приводится к bool со значением False, а непустая - со значением True