Menu
CoddyTech

布尔值是什么?

在编程中,布尔值(boolean)是一种只有两个值的数据类型:真(true)和假(false)。程序通过 age >= 18 这样的比较得到布尔值,再在 if 语句和循环条件中用它决定执行哪段代码。

作者 Kevin Spektor, 联合创始人兼 CTO

更新于 2026年9月24日

程序做出的每一个决定,最终都归结为一个只有两种答案的问题:密码是否正确,购物车是否为空,计时器是否归零。布尔值就是用来保存这些答案的数据类型。它以英国数学家 George Boole 的名字命名,他在 1847 年和 1854 年出版的著作中描述了一套关于真值和假值的代数。

布尔值从哪里来

你很少会直接输入 True 或 False。大多数布尔值来自比较运算,比较运算针对两个值提出一个问题,并用布尔值作答:

运算符含义示例结果
==等于3 == 3True
!=不等于3 != 3False
<、>小于、大于2 < 5True
<=、>=小于等于、大于等于17 >= 18False

布尔值可以像其他值一样存进变量,也可以和其他布尔值组合使用:

False
<class 'bool'>
False
True

组合布尔值:and、or、not

三个逻辑运算符可以把小条件组合成更大的条件。and 只有在两边都为真时才为真。or 只要有一边为真就为真。not 把单个值取反。

aba and ba or bnot a
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

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?
布尔值有两个值,许多语言用 1 表示真、用 0 表示假。在 Python 中 True == 1 的结果是 True,在 C 中任何非零数都被当作真。Java 则把两者严格分开:Java 的 boolean 完全不能当作数字使用。
布尔值就是“是”或“否”吗?

是的。布尔值只会是两个值中的一个,你可以把它理解为是或否、开或关、真或假。如果某样东西有两种以上的状态,比如订单可能是待付款、已付款或已退款,那就应该用字符串或枚举,而不是多个布尔值。

Python 中的布尔值是什么?
Python 的布尔类型是 bool,它的两个值是 True 和 False,首字母大写。bool 是 int 的子类,所以在算术运算中 True 的表现和 1 一样。bool() 函数会按照 Python 的真值规则,把任意值转换成 True 或 False。
什么是布尔搜索?
布尔搜索用 AND、OR 和 NOT 运算符组合关键词,用来缩小或扩大搜索结果。python AND tutorial 要求两个词都出现,python OR java 接受其中任意一个,python NOT snake 则排除包含第二个词的页面。图书馆目录和学术数据库都直接支持这种搜索,Google 也支持 OR,并用减号表示 NOT。
Coddy 编程语言插图

和 Coddy 一起学编程

开始