Harishankar <v.harishan...@gmail.com> writes: > When I run pychecker through my modules I get the message that > comparisons with "False" is not necessary and that it might yield > unexpected results.
Good advice. > Yet in some situations I need to specifically check whether False was > returned or None was returned. Why is comparison with False so bad? Because it's almost always unnecessary and can yield unexpected results :-) In other words, the only purpose of the ‘bool’ type is to have values explicitly designed for testing in Boolean conditions. Comparing them to the literals is a code smell — indicating a poor design. > # example code which matches both False and None > if not var: > # do something Can you give a specific real-world example of why this is not good enough? It's likely we can suggest better ways of achieving the broader purpose. > So how do you get around this? My functions return False and None > under different circumstances. Usually it is None that will be the special case, so it's usually better to write something like:: result = foo() if result is None: # do special things But that's just one possibility, and might not apply in your use case. > Should I raise exceptions instead? I feel it's unnecessary clutter to > use exceptions unless absolutely no other solution is available and > yet I have doubts about the "False" value. More details of the problem you're trying to solve would help with giving specific advice. -- \ “I was sad because I had no shoes, until I met a man who had no | `\ feet. So I said, ‘Got any shoes you're not using?’” —Steven | _o__) Wright | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list