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

为何使用is语句判断字符串会得到不同结果?

问题解释

这是Python的**字符串驻留(string interning)**优化机制导致的差异,核心要先明确:

  • is 运算符判断的是两个对象是否为同一个内存地址的实例,而非值是否相等;判断值相等应该用 ==。

具体原因:

  • 对于 'book' 这类符合Python标识符规则的字符串(无空格、仅由字母/数字/下划线组成,且长度较短),Python会自动将其驻留到内存的字符串池中,避免重复创建相同内容的对象。所以变量 a 和字面量 'book' 指向的是同一个内存对象,a is 'book' 返回 True。
  • 而 'two book' 包含空格,不符合标识符规则,Python默认不会对这类字符串进行自动驻留。此时变量 a 是新创建的对象,字面量 'two book' 也是另一个新对象,二者内存地址不同,a is 'two book' 就返回 False。

注意:字符串驻留是Python的底层优化,不同版本、运行环境的规则可能有细微差异,实际开发中永远用 == 判断字符串值相等,不要依赖 is 的结果。

内容的提问来源于stack exchange,提问作者m.r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:12:35