两个变量引用内容一样的字符串,使用is比较,为什么结果时为True,时为False?

python中,使用is比较两个字符串,为什么会出现下面的结果:

In [1]: x = 'ab'
        y = 'ab'
        x is y
Out[1]: True

In [2]: x = 'a123b'
        y = 'a123b'
        x is y
Out[2]: True

In [3]: x = 'a,b'
        y = 'a,b'
        x is y
Out[3]: False

In [4]: x = '#1'
        y = '#1'
        x is y
Out[4]: False
阅读 2.3k
1 个回答

is 是比较两个对象的id是否相同。
当二者为整型时:如果值在 [-5, 256]之间,两个变量使用的是同一个对象池里的对象,所以地址是一样的;值超过这个范围,后者定义的时候就得新开辟一块内存来存储,地址就不一样了;
当二者为字符串时:如果值仅包含数字、字母,则二者是一致的;
当二者为字典、元组、列表时,二者是不一致的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题