在python中經常判斷兩個字符串是否相等,這時候是用==還是使用is呢?對初學者來說是很容易犯的錯誤。
is表示的是對象標識(zhi)符(object identity), 而==表示的是相等(equal)的意思,顯然兩者不是同一個東西。
is和==的根本區別是:
1. is的作用是用來檢查對象的標示符是否一致的,也就是比較兩個對象在內存中是否擁有同一塊內存空間。
x is y 相當於:id(x) == id(y) 。所以他並不適合用來判斷兩個字符串是否相等。x is y僅當x和y是同一對象
的時候才返回True.
2. ==纔是用來檢驗兩個對象的值是否相等的。它實際調用內部__eq__()方法。所以a == b相當於a.__eq__(b),
所以==操作法是可以重載的,而is是不能被重載的。
所以:判斷兩個對象是否相等就應該使用==而不是is。