Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
1998

Сравнение `if x is not None` и `if not x is None` в Python

При программировании на Python новички часто сталкиваются с необходимостью проверки переменной на равенство None. В Python для этого существуют два распространенных

При программировании на Python новички часто сталкиваются с необходимостью проверки переменной на равенство None. В Python для этого существуют два распространенных способа: if x is not None и if not x is None. Оба варианта кажутся похожими, и это может вызвать путаницу.

Рассмотрим примеры:

x = None

# Вариант 1
if x is not None:
    print('x не равен None')
else:
    print('x равен None')

# Вариант 2
if not x is None:
    print('x не равен None')
else:
    print('x равен None')

Оба этих примера выведут «x равен None», потому что в обоих случаях проверяется условие «x не равен None», которое не выполняется.

Однако, несмотря на внешнюю схожесть, между этими двумя вариантами есть значимые различия. В Python оператор is используется для проверки идентичности объектов, а не их равенства. Это означает, что x is None проверяет, является ли x именно объектом None, а не просто пустым значением или нулем.

С другой стороны, оператор not в Python инвертирует булево значение выражения, которое следует за ним. Таким образом, if not x is None будет истинным, если x не является None и ложным в противном случае.

В то же время if x is not None является более предпочтительным стилем написания кода согласно руководству по стилю Python PEP-8. Этот вариант более читаем и понятен, так как в нем явно указывается, что x проверяется на идентичность None, а не на равенство или неравенство какому-то булеву значению.

С точки зрения производительности разницы между этими двумя вариантами нет. Однако для улучшения читаемости и понятности кода рекомендуется использовать if x is not None.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий