При программировании на 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.
Перейти в телеграм, чтобы получить результаты теста





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