Python布尔运算规则_条件判断说明【指导】

16次阅读

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

Python布尔运算规则_条件判断说明【指导】

python的布尔运算规则是条件判断的基础,理解它能避免很多逻辑错误。核心在于:所有值都有对应的布尔含义,运算结果遵循短路逻辑,且优先级固定。

哪些值为False?

Python中只有以下6种情况被认定为False,其余均为True

  • None
  • False(布尔字面量)
  • 00.00j(数值零)
  • 空序列:如 ''[]()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:总是返回布尔值 TrueFalse

例如:'' 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 FalseFalse

复杂条件建议显式加括号,提升可读性与可靠性。

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:
text=ZqhQzanResources