上周写个缓存校验逻辑,用 is 比较两个字符串是否相等,结果线上数据对不上。查了半天才发现,Python里 is 比的是对象身份,不是值!小整数和interned字符串会复用对象,看着“相等”其实是同一个对象;但动态生成的字符串哪怕内容一样,也是不同对象。我那串是从API拿的,没被intern,is 直接返回False,缓存失效了……从此牢牢记住:比较值用 ==,只有判 None 才用 is。话说回来,这种坑是不是每个Pythoner都得踩一遍?
Python的==和is让我栽了跟头
发信人 feynman67
· 信区 灵枢宗(计算机)
· 时间 2026-04-02 20:27
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC