Python将布尔值视为整数。为什么呢?
>>> boolean = True
>>> isinstance(boolean, int)
True
反转条件并询问Python是否整数是布尔值(显然不是),你得到这个:
>>> integer = 123
>>> isinstance(integer, bool)
False
答案 0 :(得分:9)
它位于文档中:https://docs.python.org/3/library/stdtypes.html?highlight=boolean#numeric-types-int-float-complex
有三种不同的数字类型:整数,浮点数和复数。 此外,布尔值是整数的子类型。
True
和False
在数值上分别等于Python中的1
和0
。
因为bool是int的子类,如上所述,内置函数" isinstance"返回true,如https://docs.python.org/3/library/functions.html#isinstance
中所述isinstance(object,classinfo)
如果object参数是classinfo参数的实例,或者是(直接,间接或虚拟)子类的实例,则返回true。如果object不是给定类型的对象,则该函数始终返回false。如果classinfo是类型对象的元组(或递归,其他此类元组),如果object是任何类型的实例,则返回true。如果classinfo不是类型和元组的类型或元组,则会引发TypeError异常。