Python中的對象包含三要素:id、type、value, 其中id用來惟一標識一個對象,type標識對象的類型,value是對象的值。 is判斷的是a對象是否就是b對象,是經過id來判斷的;==判斷的是a對象的值是否和b對象的值相等,是經過value來判斷的。
以下代碼或許能夠幫助咱們理解。 >>> a = 1 >>> b = 1.0 >>> a is b False >>> a == b True >>> id(a) 12777000 >>> id(b) 14986000 >>> a = 1 >>> b = 1 >>> a is b True >>> a == b True >>> id(a) 12777000 >>> id(b) 12777000 整形對象和字符串對象是不可變對象,因此python會很高效的緩存他們。python僅緩存簡單整形,由於它認爲在python應用程序中這些小整形會被常用,python的緩存範圍是(-1, 100),不過這個值是會改變的,請不要使用這個特性。 在對值比較的時候儘可能使用"=="或者是cmp()函數。