python中is和==的異同

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()函數。
相關文章
相關標籤/搜索