欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的is和==比較兩個(gè)對象的兩種方法

 更新時(shí)間:2017年09月06日 09:41:12   投稿:lqh  
這篇文章主要介紹了Python中的is和==比較兩個(gè)對象的兩種方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

Python中的is和==比較兩個(gè)對象的兩種方法

在Python中有兩種方式比較兩個(gè)對象是否相等,分別是is和==,兩者之間是不同的

  • ==比較的是值(如同java中的equals方法)
  • is比較的是引用(可以看作比較內(nèi)存地址, 類似于java中的==)

對于:

>>> n = 1
>>> n is 1
True
>>> b = '1'
>>> b is 1
False
>>> n == b
False

由于1和'1'不管在值上面還是在引用上面都不同,所以結(jié)果都為false

對于:

>>> n = 1
>>> n is 1
True

這里有一個(gè)知識點(diǎn),簡單來說,對于整形這種primitive type,引用比較就是值比較,然而,Python在實(shí)現(xiàn)整型中采用了這種方式,對于位于-5到256之間的數(shù)字,在內(nèi)存中保留數(shù)組存儲這些數(shù)字,下次使用時(shí)候直接引用。而在此范圍外的數(shù)字,則會(huì)新建int對象

舉個(gè)簡單的example,如下代碼所示:

#a和b的值超出256
>>> a = 257
>>> b = 257
>>> a is b
False

#a和b的值在-5和256之間
>>> a = 256
>>> b = 256
>>> a is b
True

如上例子所示,只要是在-5~256之間的整形,python不會(huì)給變量初始化新的內(nèi)存空間,但是一旦超出256,則會(huì)分配新的空間。

通過打印兩個(gè)對象的id也可以直接的看出兩個(gè)對象內(nèi)存地址的區(qū)別,如下所示:

#a和b的值超出256
>>> a = 257
>>> b = 257
>>>
>>>
>>> id(a)
140638347685960
>>> id(b)
140638347686008

#a和b的值在-5和256之間
>>> a = 256
>>> b = 256
>>> id(a)
140638347656864
>>> id(b)
140638347656864

以上就是Python is和==的對比的詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論