新聞中心
我們在比較數(shù)目是否相等的時候,可以選擇一些不同的方法來驗證結(jié)果。在python中判斷對象的相等就不是這么簡單,因為也許是判斷一個值,也是是判斷一個類別,并不是我們在數(shù)學中針對于數(shù)量的判斷。下面小編就為大家講解兩個判斷對象的方法,以及在判斷對象的區(qū)別上有什么不同。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,蕪湖縣企業(yè)網(wǎng)站建設,蕪湖縣品牌網(wǎng)站建設,網(wǎng)站定制,蕪湖縣網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,蕪湖縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
a = [1, 2, 3] b = [1, 2, 3] print(a is b) print(a == b)
大家可以先猜猜結(jié)果是什么。我之前說了python的變量就是個便利貼,\[1, 2, 3\]都是直接賦值給兩個變量,也就是說生成了兩個對象,所以a,b指向的對象不一樣。所以結(jié)果出來了,**第一個是False,第二個是True**。為什么呢?因為is比較的是對象相同不相同,但是==比較的是值相同不相同。如果打印兩個id值的話,顯然是不同的。
print(id(a), id(b))# 結(jié)果1735698385160 1735679028936
在用==進行判斷的時候?qū)嶋H是調(diào)用魔法函數(shù)__eq__()來判斷他們的值是否相等的。
總的來說,我們在判斷是否是同一個對象的時候就用is,不要用==,所以在判斷該對象是什么類型的時候建議用is或者直接用isinstance()這個方法。
class Person(): pass p = Person() print(type(p) is Person) # 結(jié)果 True
總結(jié):
-
== 是比較兩個對象的「內(nèi)容」是否相等,即兩個對象的“值“”是否相等,不管兩者在內(nèi)存中的引用地址是否一樣。
-
is 比較的是兩個實例對象是不是完全相同,它們是不是同一個對象,占用的內(nèi)存地址是否相同。即is比較兩個條件:1.內(nèi)容相同。2.「內(nèi)存中地址」相同。
-
使用is注意python對于小整數(shù)使用對象池存儲問題,和字符串的intern機制存儲問題,并且命令行運行和Pycharm運行有點不一樣,因為Pycharm對解釋器進行了優(yōu)化。
-
python中對于None值的比較:使用is
以上就是我們在python中判斷相等所用到的is和==,在名稱上都是簡單好記,用法不難,但需要小伙伴們學習的時候進行區(qū)別和理解。
當前標題:創(chuàng)新互聯(lián)Python教程:python中比較對象相等方法有哪些?區(qū)別是什么?
文章分享:http://fisionsoft.com.cn/article/coedsoc.html


咨詢
建站咨詢
