Python中的is和==比較兩個對象的兩種方法
Python中的is和==比較兩個對象的兩種方法
在Python中有兩種方式比較兩個對象是否相等,分別是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
這里有一個知識點,簡單來說,對于整形這種primitive type,引用比較就是值比較,然而,Python在實現(xiàn)整型中采用了這種方式,對于位于-5到256之間的數(shù)字,在內(nèi)存中保留數(shù)組存儲這些數(shù)字,下次使用時候直接引用。而在此范圍外的數(shù)字,則會新建int對象
舉個簡單的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不會給變量初始化新的內(nèi)存空間,但是一旦超出256,則會分配新的空間。
通過打印兩個對象的id也可以直接的看出兩個對象內(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)文章
Python的Django中將文件上傳至七牛云存儲的代碼分享
七牛云存儲可以幫助服務(wù)器轉(zhuǎn)存圖片等數(shù)據(jù),類似于Dropbox等存儲服務(wù),這里就帶給大家Python的Django中將文件上傳至七牛云存儲的代碼分享,需要的朋友可以參考下2016-06-06python?subprocess執(zhí)行外部命令常用方法詳細(xì)舉例
這篇文章主要給大家介紹了關(guān)于python?subprocess執(zhí)行外部命令常用方法的相關(guān)資料,Python的subprocess模塊提供了一種在Python中調(diào)用外部命令的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Python實現(xiàn)多圖繪制系統(tǒng)的示例代碼
這篇文章主要為大家詳細(xì)介紹了Python如何實現(xiàn)制作一個多圖繪制系統(tǒng),文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以學(xué)習(xí)一下2023-09-09pytorch中forwod函數(shù)在父類中的調(diào)用方式解讀
這篇文章主要介紹了pytorch中forwod函數(shù)在父類中的調(diào)用方式解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02pyinstaller 3.6版本通過pip安裝失敗的解決辦法(推薦)
這篇文章主要介紹了pyinstaller 3.6版本通過pip安裝失敗的解決辦法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01