Go to Google Groups Home    comp.lang.python
Re: 0 == False but [] != False?

Rex Turnbull <r...@no_spam.dicad.de>

Steven D'Aprano :

> On Thu, 24 May 2007 06:59:32 +0000, Tim Roberts wrote:

>> As a general rule, I've found code like "if x == False" to be a bad idea in
>> ANY language.

> Surely that should be written as "if (x == False) == True"?

Why compare to False?

" if not x : ... "

It really doesn't matter if x is False or if it evaluates to False. Many
things evaluate to False like [], (), 0, "", None and a few other things.

 >>> def tf(thing):
...     if thing : print "True thing", thing
...     elif not thing : print "False thing",thing
...     else : print "No thing"
...
 >>> tf([])
False thing []
 >>> tf([1])
True thing [1]
 >>> a = ()
 >>> tf(a)
False thing ()
 >>> a=(0)
 >>> tf(a)
False thing 0
 >>> a= (1,2,3)
 >>> tf(a)
True thing (1, 2, 3)
 >>> tf("abc")
True thing abc
 >>> tf("")
False thing
 >>>