You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于布尔值使用算术运算符(+、-、*、/)的结果疑问

为什么Python中布尔值做算术运算返回整数?

嘿,这个问题其实戳中了Python布尔类型的一个小细节——bool是int的子类!也就是说,True本质上就是整数1,False就是整数0。当你对布尔值使用+、-、*、/这类算术运算符时,Python会自动把它们转换成整数来执行运算,结果自然就是整数类型啦。

咱们结合你的例子拆解一下:

加法运算的逻辑

>>> a = True  # 等价于 a = 1
>>> b = False # 等价于 b = 0
>>> a + b     # 1 + 0 = 1
1
>>> a + a     # 1 + 1 = 2
2
>>> b + b     # 0 + 0 = 0
0

你验证type(a + a)得到<class 'int'>也完全合理,因为运算后返回的是整数对象,而非布尔对象。

减法运算的逻辑

同样的道理,减法也是基于整数计算:

>>> a - b     # 1 - 0 = 1
1
>>> a - a     # 1 - 1 = 0
0
>>> b - b     # 0 - 0 = 0
0

如果你的需求是得到布尔类型的结果,建议用Python的逻辑运算符(and、or、not),或者把算术运算的结果用bool()转换:

>>> bool(a + b)  # 非零整数转布尔为True
True
>>> a and b      # 逻辑与,False和True的与是False
False

内容的提问来源于stack exchange,提问作者Xantium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:40:31