基础 · #2 / 11
运算符 + 布尔逻辑
比较、身份与真值
为什么重要
决策和循环都依赖布尔值。一个错误的比较就会让一切崩溃。
核心思想
运算符把表达式转换成新的值。== 检查值是否相等,is 检查身份(是否为内存中的同一个对象)。对于字面量,1 == 1.0 是 True,但 1 is 1.0 是 False。
算术运算符
| 运算符 | 含义 |
| --- | --- |
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除(浮点数) |
| // | 向下整除 |
| % | 求余 |
| ** | 幂 |
/ 总是返回一个 float(6 / 2 == 3.0);当你想要整数商时,请使用 //。% 给出余数——它是判断"这个数是偶数吗?"以及循环索引类问题的主力工具。
试一试
Python 中的真值性:0、""、[]、{}、None 都是假值。其他一切都是真值。
for v in [0, 1, "", "hi", [], [0], None, {}, {"k": 0}]:
print(repr(v), "->", bool(v))
短路求值:and 返回第一个假值操作数(或最后一个值);or 返回第一个真值。
print(0 or "fallback") # 'fallback'
print(5 or "fallback") # 5
print(0 and "blocked") # 0
print(5 and "passed") # 'passed'
身份与相等的区别在真实代码中会咬你一口:
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
快速检查
- 问: 什么时候应该用
is? 答: 身份检查(比如x is None)。
小练习
- 用
%检查一个数是否为偶数。 - 测试某个字符是否存在于一个字符串中。
该做与不该做
- 该做:检查
None时使用x is None。 - 不该做:用
is来比较字符串或数字。
常见错误
- 错误: 用
is代替==。 修正: 比较值是否相等用==。 - 错误:
if x = 3。 修正: 条件中用==。
关键要点
==比较值;is比较身份。- 短路运算符对设置默认值很有用(
x or 0)。 - 假值:
0、""、[]、{}、None、set()。 - 永远不要显式地和
True/False比较——直接使用那个值即可。