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

Python中字符串内容相同时is运算符返回False的原因咨询

为什么内容相同的字符串用is运算符判断返回False?

先看你编写的检查回文的代码:

string = "radar"
new = string[::-1]
print(new)
print(string is new)
print(string in new)
print(string == new)

对应的输出:

radar
False
True
True

你疑惑的点在于:明明两个字符串内容一致,is却返回False。这要从==和is的本质区别说起:

  • == 比较的是两个对象的内容是否相等,只要字符串的字符序列完全匹配,就会返回True,所以这里string == new结果为True。
  • is 是判断两个变量是否指向同一个内存对象,只有当它们的内存地址完全相同时才返回True。

你通过string[::-1]切片生成的new,是一个全新的字符串对象——哪怕它的内容和原字符串string完全一样,Python也会为它分配独立的内存空间。这就导致string和new指向的是两个不同的对象,所以is运算符返回False。

额外补充:Python有字符串驻留机制,对于部分字面量形式的字符串(比如直接赋值的短字符串),Python会复用内存对象以节省空间,但通过切片、字符串拼接等操作动态生成的字符串,哪怕内容和现有字符串一致,也会创建新的对象,不会触发驻留机制。

内容的提问来源于stack exchange,提问作者Krish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:30:57