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

时间:2017-12-05 01:55:50

标签: python

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

>>> boolean = True
>>> isinstance(boolean, int)
True

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

>>> integer = 123
>>> isinstance(integer, bool)
False

1 个答案:

答案 0 :(得分:9)

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

  

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

TrueFalse在数值上分别等于Python中的10

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