Python布尔运算中仅None、False、数值零、空序列、空映射及__bool__返回False或__len__返回0的对象为False;and/or返回实际操作数,not返回布尔值;优先级为not>and>or;条件判断推荐直接使用变量而非显式比较。

Python的布尔运算规则是条件判断的基础,理解它能避免很多逻辑错误。核心在于:所有值都有对应的布尔含义,运算结果遵循短路逻辑,且优先级固定。
哪些值为False?
Python中只有以下6种情况被认定为False,其余均为True:
- None
- False(布尔字面量)
- 0、0.0、0j(数值零)
-
空序列:如
''、[]、()、set()、range(0) -
空映射:如
{} - 自定义对象中实现了
__bool__返回 False,或__len__返回 0
and、or、not 的行为特点
它们不是简单返回 True/False,而是返回参与运算的实际对象:
-
a and b:若a为 False,则返回a;否则返回b(短路:不计算 b) -
a or b:若a为 True,则返回a;否则返回b(短路:不计算 b) -
not a:总是返回布尔值True或False
例如:'' or 'hello' → 'hello';[1,2] and {'a':1} → {'a': 1};not [] → True。
立即学习“Python免费学习笔记(深入)”;
运算优先级与括号使用
顺序为:not > and > or。不加括号容易出错:
-
False or True and False等价于False or (True and False)→False - 想表达“(False or True)and False”,必须写成
(False or True) and False→False
复杂条件建议显式加括号,提升可读性与可靠性。
在 if/while 中如何安全判断?
直接用变量本身做条件最简洁,但要注意隐式转换陷阱:
- 检查列表非空:
if my_list:✅ 比if len(my_list) > 0:更 Pythonic - 检查字符串非空:
if name:✅ 不要写if name != '' - 需区分
None和空值时,显式判断:if value is not None:或if value is None: - 避免用
if x == True:—— 应写if x:;同理,if x == False:改为if not x:










