Самый питонический способ рефакторинга нескольких проверок равенства

Учитывая оператор if, например:

if response.status == SUCCESS or \
   response.status == FAILURE or \
   response.status == CLEAR or \
   response.status == READY:

Лучше провести рефакторинг как (1):

if any(response.status == status for status in (SUCCESS, FAILURE, CLEAR, READY):

Или (2):

if response.status in {SUCCESS, FAILURE, CLEAR, READY}:

Я предполагаю, что 1 лучше, поскольку он более прозрачен (если не более читабелен), но 2 более краток и позволяет избежать повторения каждого элемента в кортеже.

1 ответ

Вы можете использовать такой кортеж или список, не нужно повторять. (Python3.7)

>>>'SUCCESS' in ('SUCCESS', 'FAILURE', 'CLEAR', 'READY')
True

ваш случай

if response.status in (SUCCESS, FAILURE, CLEAR, READY):
Другие вопросы по тегам