首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 的 is 为什么时灵时不灵?拆开常量合并、小整数池与 intern 三层机制

Python 的 is 为什么时灵时不灵?拆开常量合并、小整数池与 intern 三层机制

作者头像
小小张说故事
发布于 2026-10-23 16:20:58
发布于 2026-10-23 16:20:58
650
举报
概述
is 的「时灵时不灵」是三层机制叠加:编译期常量合并让同一编译单元的 257 共享同一对象(co_consts 去重)、小整数池 -5..256、字符串 intern。257 is 257 为 True 不是驻留池扩容;int("257") is int("257") 为 False 才是运行期真相。is 只该用于单例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、先看现场:一组互相矛盾的结果
  • 二、第一层:编译期常量合并(真正的幕后黑手)
  • 三、第二层:小整数池(-5 到 256)
  • 四、第三层:字符串 intern(比你想的窄)
  • 五、is 与 == 分道扬镳的三个路口
  • 六、id() 的陷阱:地址会被回收再利用
  • 七、实战守则
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档