I would write if not somevalue: although for non boolean types it will behave differently: if not "": will run the code but if "" == False: will not.
Commented May 8, 2016 at 19:08You generally don't explicitly compare objects to False / True in Python. Just do if somevalue: or if not somevalue:
Commented May 8, 2016 at 19:08It rather depends on what somevalue can be: if somevalue could be anything you could check that it's a boolean and not :
if isinstance(somevalue, bool) and not somevalue
this doesn't rely on False being a singleton. If it always is a singleton you can also do:
if somevalue is False
But PEP8 of Python states you shouldn't care if it about the class and just use:
if not somevalue
this will evaluate if somevalue is "falsy". See Python documentation on Truth value testing.
Don't compare boolean values to True or False using == .
and gives these examples:
Yes: if greeting: No: if greeting == True: Worse: if greeting is True:
which translates in your case to:
Yes: if not greeting: No: if greeting == False: Worse: if greeting is False:
Keep in mind that each string is considered "truthy" except the empty string '' .
answered May 8, 2016 at 20:03 151k 41 41 gold badges 344 344 silver badges 365 365 bronze badgesis is checking whether two objects are literally the same object. == is checking for equality.
If you want to check whether something is false, e.g. zero, opposite of True , do if something == False .
As mentioned in the comments, you can certainly do if not something , it may improve readability quite a bit, but it's the same as if bool(something) == False .
I prefer equality, because, to my mind, True and False should behave just like 1 and 0 in terms of being true or false. For example ("a" == "a") == False evaluates to False just like ("a" == "a") == 0 does.