Python: элиф или новый, если? - PullRequest
9 голосов
/ 13 августа 2011

Что лучше использовать:

if var in X:
    #do_whatever
elif (var in Y):
    #do_whatever2

или:

if var in X:
    #do_whatever
if var in Y:
    #do_whatever2

Если предположить, что var не может быть в X и Y ... Есть ли какое-либо правило или обычная практика?Должен ли я использовать Elif?или новый если?или это не имеет значения ??

РЕДАКТИРОВАТЬ: Великолепные ответы .. Но могу ли я сказать, что если первое утверждение (#do_whwhat) заканчивается возвратом или разрывом;где, в конце концов, другое условие не будет проверено, тратя впустую системные ресурсы или вызывая проблемы, можно делать все, что угодно .. Я думаю ...

Ответы [ 5 ]

16 голосов
/ 13 августа 2011

В некоторых случаях это имеет значение. Смотрите этот пример:

def foo(var):
    if var == 5:
        var = 6
    elif var == 6:
        var = 8
    else:
        var = 10

    return var

def bar(var):
    if var == 5:
        var = 6
    if var == 6:
        var = 8
    if var not in (5, 6):
        var = 10

    return var

print foo(5)        # 6
print bar(5)        # 10
5 голосов
/ 13 августа 2011

Если второе утверждение невозможно, если первое утверждение истинно (как в данном случае, поскольку вы сказали, что var не может быть как в X, так и в Y), то вам следует использовать elif.В противном случае вторая проверка все равно будет запущена, что является пустой тратой системных ресурсов, если вы знаете, что она станет ложной.

2 голосов
/ 14 августа 2011

Глядя на код без знания данных, тогда случай elif четко заявляет о ваших намерениях, и это будет предпочтительным.они все равно должны быть проверены.

2 голосов
/ 13 августа 2011

Если вам нужно выполнить обе проверки, вы должны использовать два отдельных if s.Если вы хотите проверить один или заказ, вы всегда должны использовать elif, потому что

  • Это более эффективно.Вы сэкономите ресурсы, если ваше первое условие выполнено.
  • Вы можете столкнуться с неожиданными ошибками, если оба условия выполняются.

В отношении производительности следует также сначала рассмотреть вопрос о проверке наиболее вероятного условия.

1 голос
/ 13 августа 2011

Если var не может быть в X и Y, тогда вам следует использовать elif. Таким образом, если var in X равно true, вам не нужно бессмысленно оценивать var in Y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...