You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python小整数缓存机制出现异常结果,求技术解释

Python中300用is判断为True的原因
  • is的作用是判断两个变量是否指向同一个内存对象,而非值是否相等(值相等请用==)。
  • 你了解的[-5,256]小整数池是Python预创建的整数对象池,但这个规则的生效场景存在差异:
    • 在交互式命令行里,每行代码独立编译执行,超出小整数池的数每次赋值都会生成新对象,这时候a=300;b=300;a is b会返回False。
    • 但如果是在**脚本文件(.py)**中执行代码,Python的字节码编译器会做额外优化:同一个代码块里的相同常量会被复用。你运行的代码如果是放在脚本里执行,300作为常量会被指向同一个对象,所以a is b返回True。
  • 你使用的Python3.10.2版本的编译器包含了这种同代码块内的常量复用优化,所以出现了和预期不符的结果。
  • 注意:永远不要用is判断整数是否相等,除非你明确要检查对象是否为同一个,判断值相等请用==。

内容的提问来源于stack exchange,提问作者linchpin.00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:42:04