Python的is和==的区别

首先来看看例子:ide

(1)
>>> a = 'hello world'
>>> b = 'hello world'
>>> print(id(a),id(b))
2037326180976 2037326180784
>>> print(a is b)
False
>>> print(a == b)
True

(2)
>>> a = 'hello world'
>>> b = a
>>> print(id(a),id(b))
2037326181168 2037326181168
>>> print(a == b)
True
>>> print(a is b)
True

上述例子(1)中的a、b分别指向的是不一样的内存空间,此时a is b返回False,a == b返回True。但例(2)中当a和b指向相同内存空间时a is b返回的是True,a == b返回还是True。没错,根据官方文档中的说法,is表示的是对象标识符(object identity),而==用来检查值相等(equality)。换句话说,is就是用来判断两个对象是否在本质上是一个对象,即占用的是不是相同的内存空间。因此当咱们在判断a is b时实际上是判断id(a) == id(b),而检查a == b时实际上是调用了__eq__()方法,至关于a.__ eq __(b)。code

相关文章
相关标签/搜索