219

I'm a bit confused about how/why so many python developers use if not in their conditional statements.

for example, lets say we had a function,

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

But why go about this way? I mean, wouldn't doing if bar != None or if bar is not Nonebe more explicit? What does if not try to say?

  • 1
    This question has been asked before look here: http://stackoverflow.com/questions/100732/why-is-if-not-someobj-better-than-if-someobj-none-in-python – jlars62 May 24 '13 at 16:27
  • 6
    Because 'if not' checks for truth and '!=' checks for equality. – ecline6 May 24 '13 at 16:27

1 Answers1

278

Yes, if bar is not None is more explicit, and thus better, assuming it is indeed what you want. That's not always the case, there are subtle differences: if not bar: will execute if bar is any kind of zero or empty container, or False. Many people do use not bar where they really do mean bar is not None.