Синтаксис Python 'If not'

Я немного запутался в том, как/почему так много разработчиков python используют if not в своих условных операторах.

например, допустим, что у нас есть функция,

def foo(bar = None):
    if not bar:
        bar = 2

Но зачем идти этим путем? Я имею в виду, что бы не делать if bar != None или if bar is not None более явным? Что говорит if not сказать?

Ответ 1

Да, if bar is not None более явный и, следовательно, лучше, если предположить, что это действительно то, что вы хотите. Это не всегда так, есть незначительные отличия: if not bar: будет выполняться, если bar - любой пустой или пустой контейнер, или False. Многие люди используют not bar, где они действительно означают bar is not None.