> Because Python used not to have a boolean type and used the integers 0 and 1 instead
Exactly as Jon says. I wrote a post some time ago with more info about it: https://blog.rmotr.com/those-tricky-python-booleans-2100d5df92c On Fri, Nov 16, 2018 at 12:23 PM duncan smith <duncan@invalid.invalid> wrote: > On 16/11/18 14:51, Steve Keller wrote: > > Why do the integers 0 and 1 compare equal to the boolean values False > > and True and all other integers to neither of them? > > > > $ python3 > > Python 3.5.2 (default, Nov 12 2018, 13:43:14) > > [GCC 5.4.0 20160609] on linux > > Type "help", "copyright", "credits" or "license" for more > information. > > >>> 0 == False > > True > > >>> 1 == True > > True > > >>> 2 == False > > False > > >>> 2 == True > > False > > >>> -1 == False > > False > > >>> -1 == True > > False > > >>> > > > > Since these are objects of different types I would expect they cannot > > be equal. I know that 0 means false and != 0 means true in C, C++, > > etc. but in Python that surprises me. > > > > Steve > > > > >>> isinstance(False, int) > True > >>> isinstance(True, int) > True > >>> False.real > 0 > >>> True.real > 1 > >>> > > At least in recent Pythons. > > Duncan > -- > https://mail.python.org/mailman/listinfo/python-list > -- Santiago Basulto.- Co-founder @ rmotr.com -- https://mail.python.org/mailman/listinfo/python-list