小小张说故事
Python 的 is 为什么时灵时不灵?拆开常量合并、小整数池与 intern 三层机制
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
小小张说故事
社区首页
>
专栏
>
Python 的 is 为什么时灵时不灵?拆开常量合并、小整数池与 intern 三层机制
Python 的 is 为什么时灵时不灵?拆开常量合并、小整数池与 intern 三层机制
小小张说故事
关注
发布于 2026-10-23 16:20:58
发布于 2026-10-23 16:20:58
65
0
举报
概述
is 的「时灵时不灵」是三层机制叠加:编译期常量合并让同一编译单元的 257 共享同一对象(co_consts 去重)、小整数池 -5..256、字符串 intern。257 is 257 为 True 不是驻留池扩容;int("257") is int("257") 为 False 才是运行期真相。is 只该用于单例。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
python
目录
一、先看现场:一组互相矛盾的结果
二、第一层:编译期常量合并(真正的幕后黑手)
三、第二层:小整数池(-5 到 256)
四、第三层:字符串 intern(比你想的窄)
五、is 与 == 分道扬镳的三个路口
六、id() 的陷阱:地址会被回收再利用
七、实战守则
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档