您好,登錄后才能下訂單哦!
這篇文章主要介紹python運(yùn)算符中怎么選擇is和==,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
我們?cè)跀?shù)學(xué)中想要判斷兩個(gè)對(duì)象是否相等,可以使用=號(hào)。在python中由于比較的數(shù)據(jù)不一定是數(shù)值,所以我們的符號(hào)有is和==可以選擇。那么在不同的條件下,選擇is還是==是有所不同的。下面我們?cè)谏矸葸\(yùn)算符中尋找is和==在判斷對(duì)象引用上的區(qū)別,幫助大家在使用身份運(yùn)算符時(shí)能更好的選擇,具體內(nèi)容如下:
身份運(yùn)算符是用來判斷兩個(gè)變量是否是引用了相同內(nèi)存地址的運(yùn)算符。
兩個(gè)變量的值相等,它們不一定就是引用了相同的內(nèi)存地址,但如果兩個(gè)變量引用了相同的內(nèi)存地址,那么他們的值必然相等。
身份運(yùn)算符說白了其實(shí)就是is符號(hào)。它可以用來比較兩個(gè)變量是否引用了同一個(gè)對(duì)象。
>>> a = 3 >>> id(a) 140602638349720 >>> hex(id(a)) # 還原成我們看著更順眼的16進(jìn)制,但是本文以10進(jìn)制地址為主(因?yàn)閼校? '0x7fe09a503598'
顧名思義,is是“相同”,而==是指兩者之間的”相等“關(guān)系。所謂相同,比較的是兩者之間的在內(nèi)存中的位置,
>>> a = 3 >>> id(a) 140602638349720 >>> b = 3 # b指向的是和a指向的同一塊地址(但是并不意味這改變了a,b也會(huì)相應(yīng)改變) >>> id(b) 140602638349720 >>> c = a # a的引用復(fù)制給c,在內(nèi)存中其實(shí)是指向了用一個(gè)對(duì)象 >>> id(c) 140602638349720 >>> a is b True >>> a is c True >>> b is c True
我們看到,上面a,b,c的地址相同,所以他們互相之間”相同“
而相等則兩者之間的數(shù)值對(duì)應(yīng)相等
>>> a = 3 >>> b = a >>> a = 4 >>> b 3 >>> a = [3] >>> b = [3] >>> id(a) 4351374184 >>> id(b) 4351374112 >>> a is b False >>> a == b True >>> a[0] = 4 >>> b [3] >>> a = [3] >>> b = a # b就是a的引用,占得是同一塊地址,而且當(dāng)a的內(nèi)容改變時(shí),b也會(huì)隨之改變,這和上面 # int對(duì)象不同,我也不知道為啥要這么搞。 >>> a[0] = 4 >>> b [4]
很多人看到這肯定是一鍋漿糊了,其實(shí)就是一個(gè)原則,能用==就不用is。除了一種情況,那就是判斷對(duì)象是否是None。
>>> if a is None: ... pass
以上是“python運(yùn)算符中怎么選擇is和==”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。