为什么Python认为布尔值是整数?

Cha*_*uan 3 python

Python将布尔值视为整数.为什么?

>>> boolean = True
>>> isinstance(boolean, int)
True
Run Code Online (Sandbox Code Playgroud)

反转条件并询问Python是否整数是布尔值(显然不是),你得到这个:

>>> integer = 123
>>> isinstance(integer, bool)
False
Run Code Online (Sandbox Code Playgroud)

Jam*_*mes 11

它位于文档中:https://docs.python.org/3/library/stdtypes.html?highlight = boolean #numeric-types-int-float-complex

有三种不同的数字类型:整数,浮点数和复数.此外,布尔值是整数的子类型.

True并且False在数值上分别等于10在Python中.

因为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异常.