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

Python中整数值变量is判断在控制台与文件执行结果不同原因

Python相同整数值is判断结果不一致的原因
  • 首先明确核心逻辑:Python中is关键字判断的是两个变量是否指向内存中的同一个对象,比较的是对象内存地址;==才是判断两个对象的值是否相等。
  • 小整数驻留机制的局限性:Python默认仅缓存了[-5, 256]区间的整数对象,该范围内的整数全局共用同一个实例,任意场景下is判断都为True。而399超出了该缓存区间,默认不会全局复用实例。
  • .py文件运行时的常量合并优化:当代码作为完整代码块(比如整个.py文件、函数内部、类定义内部)被统一编译时,Python编译器会做常量优化:同一个代码块内出现的相同不可变常量(整数、字符串、元组等)会被合并为同一个实例,减少内存占用。所以在.py文件中,a和b的399会被识别为同一个常量,指向同一个对象,a is b返回True。
  • 控制台交互模式的执行逻辑:交互式解释器是逐行编译执行,每一行输入都是独立的代码块,无法做跨代码块的常量合并。a = 399和b = 399是两次独立的编译过程,分别生成了两个值相同但内存地址不同的整数对象,所以a is b返回False。

注意:日常开发中判断数值、字符串等不可变类型的值是否相等时,必须使用==,不要依赖is的判断结果,避免因为环境、实现差异出现不可预期的错误。

内容的提问来源于stack exchange,提问作者Роман Яровой

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:54:04