Grace's Dev Site
write关于我
闭坑指南 · Python#经典错误

is 与 ==

身份比较 vs 值比较,小整数缓存与 None。

is 与 ==

| 运算符 | 含义 | |--------|------| | == | 值是否相等(调用 __eq__) | | is | 是否是同一个对象(同一内存地址) |

何时用 is

  • None 比较:if x is None
  • 单例对象(谨慎)

不要用 is 比较字符串/列表内容

a is b 为真只说明碰巧同一对象,不能代替 ==

小整数缓存

CPython 会缓存 -5256 的整数,所以 256 is 256 常为真,257 不一定。不要依赖这个行为写业务逻辑。

在线运行 Python

Pyodide