Is it guaranteed that False "is 0" and True "is 1"?

boolean, python

Solution

It is part of the language specification, so any Python implementation should implement the booleans as equivalent to the integers.

Booleans

These represent the truth values False and True. The two objects representing the values False and True are the only Boolean objects. The Boolean type is a subtype of plain integers, and Boolean values behave like the values 0 and 1, respectively, in almost all contexts, the exception being that when converted to a string, the strings `"False"` or `"True"` are returned, respectively.

Problem

Possible Duplicate: Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language? I noticed today that the following works using python 2.6 (Cpython)... ``` >>> a=[100,200] >>> a[True] 200 >>> a[False] 100 ``` Is this portable to other python implementations (e.g. is `True`/`False` guaranteed to inherit from int? Is `True` guaranteed to evaluate to 1 instead of some other non-zero number?) Is there any situation where this would be useful? It seems like it could be used as another form of a ternary operator, but I don't know how much is gained there...

Original source

Related problems