Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么连接布尔值会返回整数?_Python - Fatal编程技术网

Python 为什么连接布尔值会返回整数?

Python 为什么连接布尔值会返回整数?,python,Python,在python中,可以连接布尔值,它将返回一个整数。例如: >>> True True >>> True + True 2 >>> True + False 1 >>> True + True + True 3 >>> True + True + False 2 >>> False + False 0 为什么??为什么这有意义 我知道True通常表示为1,而False表示为0,但这仍然不

在python中,可以连接布尔值,它将返回一个整数。例如:

>>> True
True
>>> True + True
2
>>> True + False
1
>>> True + True + True
3
>>> True + True + False
2
>>> False + False
0
为什么??为什么这有意义

我知道
True
通常表示为
1
,而
False
表示为
0
,但这仍然不能解释将相同类型的两个值相加如何返回完全不同的类型。

将“concatenate”替换为“add”和
True
/
False
1
/
0
,正如您所说,这非常有意义

在一句话中总结True和False:它们是拼写整数值1和0的替代方法,唯一的区别是str()和repr()返回字符串'True'和'False',而不是'1'和'0'


另请参见:

因为在Python中,
bool
int
的子类/子类型

>>> issubclass(bool,int)
True
更新

试试这个:

IDLE 2.6.4      
>>> True == 1
True
>>> False == 0
True
>>> 

精彩的。正是我想要的你的期望是什么?在标量类型的上下文中,“连接”是什么意思?对于逻辑运算,使用了
,等等。-1:这个用例是什么?为什么这很重要?我真的不知道我的期望是什么,但我绝对没有想到会发生这种情况。@S.Lott我认为这很重要,因为布尔类型(和/+)之间的差异不一定很明显,所以这是一个值得问的问题。
True is 1
False is 0
+ is ADD
IDLE 2.6.4      
>>> True == 1
True
>>> False == 0
True
>>>