A Boolean type was added to Python 2.3. Two new constants were added
to the __builtin__ module, True and
False. (True and
False constants were added to the built-ins
in Python 2.2.1, but the 2.2.1 versions are simply set to integer values of
1 and 0 and aren't a different type.)
The type object for this new type is named
bool; the constructor for it takes any Python value and
converts it to True or False.
Python's Booleans were added with the primary goal of making code
clearer. For example, if you're reading a function and encounter the
statement return 1, you might wonder whether the 1
represents a Boolean truth value, an index, or a
coefficient that multiplies some other quantity. If the statement is
return True, however, the meaning of the return value is quite
clear.
Python's Booleans were not added for the sake of strict
type-checking. A very strict language such as Pascal would also
prevent you performing arithmetic with Booleans, and would require
that the expression in an if statement always evaluate to a
Boolean result. Python is not this strict and never will be, as
PEP 285 explicitly says. This means you can still use any
expression in an if statement, even ones that evaluate to a
list or tuple or some random object. The Boolean type is a
subclass of the int class so that arithmetic using a Boolean
still works.
To sum up True and False in a sentence: they're
alternative ways to spell the integer values 1 and 0, with the single
difference that str() and repr() return the
strings 'True' and 'False' instead of '1' and
'0'.