Как сократить выражение «нет, нет» в операторе if - PullRequest
0 голосов
/ 10 октября 2018

В Python3 Truth Value Testing в PEP8 говорит, что для if A is None: его можно преобразовать в if not A:.Точно так же, поскольку приведенный ниже код выглядит настолько запутанным и сложным для восприятия сразу, может ли он быть выражен более кратко, так или иначе?

if A is not None and B is not None and C is not None:

Ответы [ 2 ]

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

Я согласен с супербеком, используя any() или all(), но вы также можете проверить, существует ли None в списке, включающем A, B, C

if not (None in [A,B,C]): илиболее интуитивно if None not in [A, B, C]: (Blckknght)


примечание (более глубокое погружение)

В любом случае, я бы не рекомендовал использовать if A and B and C:, потому что if A is not None и if A делают разные вещи.

if A: вызывает A.__nonzero__() и использует возвращаемое значение этой функции.

if A is not None - проверяет идентичность в Python.Потому что в работающем скрипте / программе Python есть только один экземпляр None,

отметьте post и post

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

any () и all () могут быть использованы с пониманием, чтобы помочь и в этих случаях.

if all([x is not None for x in [A,B,C]]):
...