On Thu, Aug 09, 2012 at 01:15:38PM +1000, Ben Finney email@example.com wrote:
Oleg Broytman firstname.lastname@example.org writes:
On Thu, Aug 09, 2012 at 02:18:53AM +1000, Ben Finney email@example.com wrote:
What is a compelling use case for checking precisely for True or False?
To distinguish False and None for a tri-state variable that can have 3 values - "yes", "no" and "unspecified" - True, False and None in Python-speak.
Since True and False are strongly coupled with a *two*-state type, that just seems needlessly confusing to the reader of the code. Better to use a non-bool type which makes it explicit that there are three valid values.
I am not always free to use my own classes and values. Sometimes (quite often, actually) I receive values from 3rd-party libraries. Example - DB API drivers:
cursor.execute("SELECT boolean FROM mytable") row = cursor.fetchone()
Now row is that tri-state variable with possible values 1/0/None or True/False/None. None is of course for SQL NULL.