基础 · #2 / 11

运算符 + 布尔逻辑

比较、身份与真值

为什么重要

决策和循环都依赖布尔值。一个错误的比较就会让一切崩溃。

核心思想

运算符把表达式转换成新的值。== 检查值是否相等,is 检查身份(是否为内存中的同一个对象)。对于字面量,1 == 1.0True,但 1 is 1.0False

算术运算符

| 运算符 | 含义 | | --- | --- | | + | 加 | | - | 减 | | * | 乘 | | / | 除(浮点数) | | // | 向下整除 | | % | 求余 | | ** | 幂 |

/ 总是返回一个 float6 / 2 == 3.0);当你想要整数商时,请使用 //% 给出余数——它是判断"这个数是偶数吗?"以及循环索引类问题的主力工具。

试一试

Python 中的真值性:0""[]{}None 都是假值。其他一切都是真值。

for v in [0, 1, "", "hi", [], [0], None, {}, {"k": 0}]:
  print(repr(v), "->", bool(v))
not loaded

短路求值:and 返回第一个假值操作数(或最后一个值);or 返回第一个真值。

print(0 or "fallback")   # 'fallback'
print(5 or "fallback")   # 5
print(0 and "blocked")   # 0
print(5 and "passed")    # 'passed'
not loaded

身份与相等的区别在真实代码中会咬你一口:

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)   # True  — same values
print(a is b)   # False — different objects
c = a
print(a is c)   # True  — same object
not loaded

快速检查

小练习

该做与不该做

常见错误

关键要点