扣丁學堂剖析Python視頻教程之is和==的區別是什麼

今天扣丁學堂小編給大家介紹一下關於Python編程語言is和==的區別是什麼?首先在Python中一切都是對象,Python中對象包含的三個基本要素,分別是:id(身份標識)、type(數據類型)和value(值)。對象之間比較是否相等可以用==,也可以用is。目前is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容並不相同。下面來看看具體區別在哪?  

2222.jpg

​is比較的是兩個對象的id值是否相等,也就是比較兩個對象是否爲同一個實例對象,是否指向同一個內存地址。  

==比較的是兩個對象的內容是否相等,默認會調用對象的__eq__()方法。以下代碼在Python3.5下測試通過。  

==比較操作符和is同一性運算符區別,==是python標準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等。  

  

代碼1:  

>>>a=[1,2,3]  

>>>b=a  

>>>bisa  

True  

>>>b==a  

True  

>>>b=a[:]  

>>>bisa  

False  

>>>b==a  

True  

解釋一下爲什麼?is也被叫做同一性運算符,也就是id是否相同。看下面代碼,a和b變量的id不同,所以b==a是True,bisa是False.  

代碼2:  

>>>id(a)  

4364243328  

>>>  

>>>id(b)  

4364202696  

哪些情況下is和==結果是完全相同的?  

代碼3:  

>>>a=256  

>>>b=256  

>>>aisb  

True  

>>>a==b  

True  

>>>  

>>>a=1000  

>>>b=10**3  

>>>a==b  

True  

>>>aisb  

False  

>>>  

結論:數字類型不完全相同。爲什麼256時相同,而1000時不同?因爲出於對性能的考慮,Python內部做了很多的優化工作,對於整數對象,Python把一些頻繁使用的整數對象緩存起來,保存到一個叫small_ints的鏈表中,在Python的整個生命週期內,任何需要引用這些整數對象的地方,都不再重新創建新的對象,而是直接引用緩存中的對象。Python把這些可能頻繁使用的整數對象規定在範圍[-5,256]之間的小對象放在small_ints中,但凡是需要用些小整數時,就從這裏面取,不再去臨時創建新的對象。  

代碼4:  

>>>c=codingke.com'  

>>>d=codingke.com'  

>>>cisd  

False  

>>>c==d  

True  

>>>c='codingkecom'  

>>>d='codingkecom'  

>>>cisc  

True  

>>>c==d  

True  

結論:字符串類型不完全相同。這個和解釋器實現有關。  

代碼5:  

>>>a=(1,2,3)#a和b爲元組類型  

>>>b=(1,2,3)  

>>>aisb  

False  

>>>a=[1,2,3]#a和b爲list類型  

>>>b=[1,2,3]  

>>>aisb  

False  

>>>a={codingke:100,'com':1}#a和b爲dict類型  

>>>b={codingke:100,'com':1}  

>>>aisb  

False  

>>>a=set([1,2,3])#a和b爲set類型  

>>>b=set([1,2,3])  

>>>aisb  

False  

 

結論:當變量是數字、字符串、元組,列表,字典時,is和==都不相同,不能互換使用!當比較值時,要使用==,比較是否是同一個內存地址時應該使用is。當然,開發中比較值的情況比較多。  

 

以上就是關於Python視頻教程之is和==的區別的詳細介紹,最後想要了解更多資訊或學習Python開發請關注扣丁學堂官網和微信公衆號。扣丁學堂作爲知名的IT培訓機構,不僅有專業的Python培訓講師和與時俱進的課程體系,還有大量的Python全棧開發工程師視頻教程供學員觀看學習,想要學好Python開發技術的小夥伴就抓緊時間行動吧。扣丁學堂Python技術交流羣:279521237。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章