Python布尔运算中仅None、False、数值零、空序列、空映射及__bool__返回False或__len__返回0的对象为False;and/or返回实际操作数,not返回布尔值;优先级为not>and>or;条件判断推荐直接使用变量而非显式比较。
Python的布尔运算规则是条件判断的基础,理解它能避免很多逻辑错误。核心在于:所有值都有对应的布尔含义,运算结果遵循短路逻辑,且优先级固定。
Python中只有以下6种情况被认定为False,其余均为True:
列:如 ''、[]、()、set()、range(0)
{}
__bool__ 返回 False,或 __len__ 返回 0它们不是简单返回 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。
顺序为:not > and > or。不加括号容易出错:
False or True and False 等价于 False or (True and False) → False
(False or True) and False → False
复杂条件建议显式加括号,提升可读性与可靠性。
直接用变量本身做条件最简洁,但要注意隐式转换陷阱:
if my_list: ✅ 比 if len(my_list) > 0: 更 Pythonicif name: ✅ 不要写 if name != ''
None 和空值时,显式判断:if value is not None: 或 if value is None:
if x == True: —— 应写 if x:;同理,if x == False: 改为 if not x: