這篇文章將為大家詳細講解有關Python中is和==的區(qū)別是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)致力于成都做網站、成都網站制作、成都外貿網站建設,成都網站設計,集團網站建設等服務標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務水平進行質量交付,讓企業(yè)網站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網站建設服務!在Python中一切都是對象。
Python中對象包含的三個基本要素,分別是:
id(身份標識)
type(數(shù)據類型)
value(值)
對象之間比較是否相等可以用 == ,也可以用 is 。
is 和 == 都是對對象進行比較判斷作用的,但對對象比較判斷的內容并不相同。下面來看看具體區(qū)別在哪?
is 比較的是兩個對象的id值是否相等,也就是比較兩個對象是否為同一個實例對象,是否指向同一個內存地址。
== 比較的是兩個對象的內容是否相等,默認會調用對象的 __eq__ 方法。
== 是python標準操作符中的比較操作符,用來比較判斷兩個對象的值是否相等。
先來看一個例子
>>> a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True
is 也被叫做同一性運算符,也就是id是否相同。
看下面代碼, a和b變量的id不同, 所以 b == a 是True, b is a 是False.
再來看一下他們的id:
>>> id(a) 4364243328 >>> >>> id(b) 4364202696
哪些情況下 is 和 == 結果是完全相同的?
>>> a = 256 >>> b = 256 >>> a is b True >>> a == b True >>> a = 1000 >>> b = 10**3 >>> a == b True >>> a is b False >>>
所以數(shù)字類型不完全相同。
那為什么256時相同, 而1000時不同呢?
因為出于對性能的考慮,Python內部做了很多的優(yōu)化工作,對于整數(shù)對象,Python把一些頻繁使用的整數(shù)對象緩存起來,保存到一個叫 small_ints 的鏈表中,在Python的整個生命周期內,任何需要引用這些整數(shù)對象的地方,都不再重新創(chuàng)建新的對象,而是直接引用緩存中的對象。
Python把這些可能頻繁使用的整數(shù)對象規(guī)定在范圍 [-5, 256] 之間的小對象放在 small_ints 中,但凡是需要用些小整數(shù)時,就從這里面取,不再去臨時創(chuàng)建新的對象。
>>> c = 'miracle.young' >>> d = 'miracle.young' >>> c is d False >>> c == d True >>> c = 'miracleyoung' >>> d = 'miracleyoung' >>> c is c True >>> c == d True
所以字符串類型不完全相同,這個和解釋器實現(xiàn)有關。
>>> a = (1,2,3) # a和b為元組類型 >>> b = (1,2,3) >>> a is b False >>> a = [1,2,3] # a和b為list類型 >>> b = [1,2,3] >>> a is b False >>> a = {'miracle':100,'young':1} # a和b為dict類型 >>> b = {'miracle':100,'young':1} >>> a is b False >>> a = set([1,2,3]) # a和b為set類型 >>> b = set([1,2,3]) >>> a is b False
所以當變量是數(shù)字、字符串、元組,列表,字典時,is 和 == 都不相同, 不能互換使用!當比較值時,要使用 ==,比較是否是同一個內存地址時應該使用is。
當然,開發(fā)中比較值的情況比較多。
關于“Python中is和==的區(qū)別是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:Python中is和==的區(qū)別是什么-創(chuàng)新互聯(lián)
文章來源:http://bm7419.com/article8/dpdeop.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網站、小程序開發(fā)、網站維護、網站導航、關鍵詞優(yōu)化、App開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容