Большинство pythoni c способ рефакторинга множественных проверок на равенство - PullRequest
0 голосов
/ 08 января 2020

С учетом оператора 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 Ответ

0 голосов
/ 08 января 2020

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

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

ваш случай

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