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

为什么Python认为布尔值是整数?,python,Python,Python将布尔值视为整数。为什么? >>> boolean = True >>> isinstance(boolean, int) True 反转条件并询问Python整数是否为布尔值(显然为否),您将得到以下结果: >>> integer = 123 >>> isinstance(integer, bool) False 文件中有: 有三种不同的数字类型:整数、浮点数和复数此外,布尔是整数的一个子类型。 True和

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

>>> boolean = True
>>> isinstance(boolean, int)
True
反转条件并询问Python整数是否为布尔值(显然为否),您将得到以下结果:

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

文件中有:

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

True
False
在数字上分别等于Python中的
1
0

由于bool是int的一个子类,如上所述,内置函数“isinstance”返回true,如中所述

isinstance(对象,classinfo)

如果对象参数是classinfo参数或其(直接、间接或虚拟)子类的实例,则返回true。如果对象不是给定类型的对象,则函数始终返回false。如果classinfo是类型对象的元组(或递归地,其他此类元组),则如果对象是任何类型的实例,则返回true。如果classinfo不是类型或类型的元组,则会引发TypeError异常


比我快。另外,请参阅有关iInstance的文档。它返回true,它属于该类型或其子类型(如您所确定的),从而解释了问题中“isinstance”的行为。true和False不仅仅是别名,它们是不同的值。是的,我刚刚测试过,发现
true is 1
返回False@user2357112为我修复了它。您可以在上阅读关于采用
bool
类型的信息。这应该有助于澄清你的许多问题。
math.sin(True)
=
0.8415
,工作中的布尔三角。