Python: если нет или оператор против вложенного оператора if - PullRequest
0 голосов
/ 10 ноября 2018

Мне очень тяжело оборачиваться, если нет, или заявления. Благодаря stackoverflow, я знаю, что выражение, выполняющее оператор or, будет выполняться только в том случае, если первое, если не утверждение - False, но все мои пальцы, кажется, хотят печатать, когда сталкиваются с возможным вариантом использования этого, это скорее вложенный если заявление.

Например, следующие классы выдают один и тот же вывод для любого значения x.

def if_not_or(self, x):
    if not isinstance(x, int) or x % 2 == 0:
        return False
    return True

def nested_if(self, x):
    if isinstance(x, int):
        if x % 2 == 1:
            return True
    return False

Несмотря на то, что первый метод выглядит более элегантным, он дает какое-то конкретное преимущество перед лестничным методом? Я боюсь, что если потенциальный вариант использования этого появится в одном из моих проектов, я просто выберу подход «вложенный, если», потому что мне легче обернуть свой ум начального и среднего уровня программирования. Большое спасибо за просвещение по этой теме.

1 Ответ

0 голосов
/ 10 ноября 2018

Существует третий подход к вашей проблеме, а именно:

def direct_return(self, x):
    # return True if x is an odd number, False otherwise
    return isinstance(x, int) and x % 2 == 1

При любом из этих подходов вы увидите разницу в производительности. Но, как предлагается в комментариях, читаемость имеет значение.

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