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

相關文章
相關標籤/搜索