详解python中is与==的适用场景

2018-07-24  本文已影响0人  成橙铖

首先我们来分析一个问题,判断两个字符串是否相等?

>> a = "Hi"
>> b = "Hi"
>> a is b
True
>> a == b  # 我们会发现两个的结果一样
True

再看这个例子

>> a = "I am using long string for testing"
>> b = "I am using long string for testing"
>> a is b
False
>> a == b
True

通过id()查看变量在内存中具体的存储空间
第一个例子的两个变量存储空间相同,第二个不同。造成is的结果不一样。
官方文档对这is和==两种的描述:

is : object identity(对象标示符)
== : equal(相等)

a is b  调用的是id(a) == id(b)  判断两个对象在内存中是否拥有同一块内存空间
a == b 相当于a.__eq__(b),调用内部的__eq__方法。
了解了区别之后我们再来分析一下上面两个例子,都是字符串,为何结果却不一样?
上一篇下一篇

猜你喜欢

热点阅读