新聞中心
我們?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)算符是用來(lái)判斷兩個(gè)變量是否是引用了相同內(nèi)存地址的運(yùn)算符。
兩個(gè)變量的值相等,它們不一定就是引用了相同的內(nèi)存地址,但如果兩個(gè)變量引用了相同的內(nèi)存地址,那么他們的值必然相等。
身份運(yùn)算符說(shuō)白了其實(shí)就是is符號(hào)。它可以用來(lái)比較兩個(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還是==,相信大家已經(jīng)明白兩個(gè)的區(qū)別和用法了,小編還是推薦使用==多一點(diǎn)。
本文題目:創(chuàng)新互聯(lián)Python教程:python運(yùn)算符中如何選擇is和==?
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/dhisjid.html


咨詢
建站咨詢
