Проверка нескольких значений в Python
В программе есть сразу три флага или настройки, которые мне нужно проверить. Собственно, вот код и как я выполняю проверку:
setting_enabled = 0
setting_visible = 1
setting_public = 0
if setting_enabled == 1 or setting_visible == 1 or setting_public == 1:
print('Действие')
Есть способ как-то сделать это изящнее?
Ответы
Решение
Из логики понял, что необходимо чтобы хотя бы один параметр из трех соответствовал значению 1. Тогда можно воспользоваться ключевым словом in:
setting_enabled, setting_visible, setting_public = 0, 1, 0
if 1 in (setting_enabled, setting_visible, setting_public):
print('Действие')
Учитывая, что в булевой логике 0 это False, а 1 это True можем воспользоваться тем же что и при логических выражениях:
if setting_enabled or setting_visible or setting_public:
print('Действие')
Или использовать метод any, он здесь весьма кстати будет:
if any((setting_enabled, setting_visible, setting_public)):
print('Действие')