"0 in [True,False]" returns True
duncan.booth at invalid.invalid
Tue Dec 13 11:28:34 CET 2005
>> if the purpose of the return value is to indicate a Boolean rather than
>> an arbitrary integer.
> True, but if that is the only reason, Two built-in value of
> True/False(0/1) serves the need which is what is now(well sort of). Why
> have seperate types and distinguish them ?
>>>>True == 1
>>>>True is 1
Within Python that would probably be sufficient, but some external
libraries e.g. COM or XMLRPC make a distinction between integers and
booleans, so it makes it more convenient if there is a defined way to
distinguish between calling one overloaded method which takes an integer or
another of the same name which take a boolean.
Before Python had a separate boolean type there was an implementation
detail which mean that it was possible to distinguish the constants 0 and 1
which were generated by a comparison from other constant 0 and 1 values.
The python COM libraries used this 'feature'.
XMLRPC has its own Boolean class which is used in Python versions where
boolean is not a builtin.
Another reason to have a boolean type is of course to provide a cast:
More information about the Python-list