布尔值是什么?
在编程中,布尔值(boolean)是一种只有两个值的数据类型:真(true)和假(false)。程序通过 age >= 18 这样的比较得到布尔值,再在 if 语句和循环条件中用它决定执行哪段代码。
更新于 2026年9月24日
程序做出的每一个决定,最终都归结为一个只有两种答案的问题:密码是否正确,购物车是否为空,计时器是否归零。布尔值就是用来保存这些答案的数据类型。它以英国数学家 George Boole 的名字命名,他在 1847 年和 1854 年出版的著作中描述了一套关于真值和假值的代数。
布尔值从哪里来
你很少会直接输入 True 或 False。大多数布尔值来自比较运算,比较运算针对两个值提出一个问题,并用布尔值作答:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
== | 等于 | 3 == 3 | True |
!= | 不等于 | 3 != 3 | False |
<、> | 小于、大于 | 2 < 5 | True |
<=、>= | 小于等于、大于等于 | 17 >= 18 | False |
布尔值可以像其他值一样存进变量,也可以和其他布尔值组合使用:
False
<class 'bool'>
False
True
组合布尔值:and、or、not
三个逻辑运算符可以把小条件组合成更大的条件。and 只有在两边都为真时才为真。or 只要有一边为真就为真。not 把单个值取反。
a | b | a and b | a or b | not a |
|---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
Python 用单词来写这些运算符,C、Java 和 JavaScript 则用符号:&& 表示与,|| 表示或,! 表示非。这四种语言都会在结果确定后立即停止求值,所以在 a and b 中,如果 a 为假,右边就根本不会被检查。这叫作短路求值。Python 逻辑运算符指南对此有详细讲解。
布尔值如何控制程序
if 语句只在条件为真时执行它的代码块。while 循环只要条件一直为真,就会重复执行代码块,所以每个循环都由一个布尔值驱动,每一轮开始前都会重新检查它。这种重复叫作迭代。
Hot day
Countdown: 3
Countdown: 2
Countdown: 1
当 count 变为 0 时,条件 count > 0 变成 False,循环结束。如果条件永远不会变为假,循环就会一直运行下去。
布尔值与 1 和 0
一个布尔值只需要一个比特的信息:1 表示真,0 表示假。但实际上,各种语言至少用一个完整的字节来存储布尔值,因为字节是拥有独立地址的最小内存单位。在 C 中,<stdbool.h> 里的 bool 在 gcc 和 clang 下占 1 个字节。需要数百万个标志的程序,会用位运算符把 8 个标志打包进一个字节。
各种语言对布尔值是不是数字看法不一。在 Python 中,bool 是 int 的子类,所以 True 等于 1,False 等于 0。这让计数变得很方便:
True True
2
3 correct
JavaScript 中 true + true 的结果也是 2。C 直到 C99 才有布尔类型,并且至今仍把任何非零数当作真。Java 则很严格:if (1) 无法通过编译,因为 Java 的条件必须是 boolean。
真值与假值
Python 和 JavaScript 允许你把任何值用作条件,而不仅仅是 True 和 False。被当作假的值叫作假值(falsy),其余的都是真值(truthy)。
0 -> False
42 -> True
'' -> False
'False' -> True
[] -> False
[0] -> True
None -> False
在 Python 中,零、空字符串、空集合和 None 都是假值。字符串 "False" 是真值,因为它是一个包含五个字符的字符串。JavaScript 有自己的一套假值,包括 false、0、""、null、undefined 和 NaN,而且在 JavaScript 里空数组 [] 是真值。完整规则请看 JavaScript 中的真值与假值。
常见错误
与 True 比较。 if is_ready == True: 能运行,但 if is_ready: 意思相同,读起来更简洁。判断为假的情况,就写 if not is_ready:。
把文本当作布尔值。 来自用户、文件或表单的输入都是字符串,所以 bool("false") 的结果是 True。应该直接比较文本:answer == "yes"。
大小写写错。 Python 写作 True 和 False;JavaScript、Java 和 C 写作 true 和 false。在 Python 中输入 true 会得到 NameError: name 'true' is not defined。
名字含糊。 给布尔值起名时,要让它像一个是非问题,比如 is_valid、has_access 或 can_edit,这样条件读起来就像一句话:if user.can_edit:。
下一步学什么
布尔值决定了循环执行多少次,所以迭代是什么是自然而然的下一页;比特是什么则展示了每个真和假底下的 0 和 1。想了解 Python 中的细节,可以阅读数字和布尔值,然后在 Python 课程里练习条件语句。
常见问题
布尔值有哪些例子?
5 > 3 是一个布尔表达式,它的值是 True。像 is_logged_in = False 这样的变量存放的就是一个布尔值。在图书馆目录里,搜索 cats AND dogs 是一个布尔查询,用的也是同样的逻辑。布尔值是 1 还是 0?
True == 1 的结果是 True,在 C 中任何非零数都被当作真。Java 则把两者严格分开:Java 的 boolean 完全不能当作数字使用。布尔值就是“是”或“否”吗?
是的。布尔值只会是两个值中的一个,你可以把它理解为是或否、开或关、真或假。如果某样东西有两种以上的状态,比如订单可能是待付款、已付款或已退款,那就应该用字符串或枚举,而不是多个布尔值。
Python 中的布尔值是什么?
bool,它的两个值是 True 和 False,首字母大写。bool 是 int 的子类,所以在算术运算中 True 的表现和 1 一样。bool() 函数会按照 Python 的真值规则,把任意值转换成 True 或 False。什么是布尔搜索?
python AND tutorial 要求两个词都出现,python OR java 接受其中任意一个,python NOT snake 则排除包含第二个词的页面。图书馆目录和学术数据库都直接支持这种搜索,Google 也支持 OR,并用减号表示 NOT。