新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python運算符中如何選擇is和==?
我們在數(shù)學(xué)中想要判斷兩個對象是否相等,可以使用=號。在python中由于比較的數(shù)據(jù)不一定是數(shù)值,所以我們的符號有is和==可以選擇。那么在不同的條件下,選擇is還是==是有所不同的。下面我們在身份運算符中尋找is和==在判斷對象引用上的區(qū)別,幫助大家在使用身份運算符時能更好的選擇,具體內(nèi)容如下:

身份運算符是用來判斷兩個變量是否是引用了相同內(nèi)存地址的運算符。
兩個變量的值相等,它們不一定就是引用了相同的內(nèi)存地址,但如果兩個變量引用了相同的內(nèi)存地址,那么他們的值必然相等。
身份運算符說白了其實就是is符號。它可以用來比較兩個變量是否引用了同一個對象。
>>> a = 3 >>> id(a) 140602638349720 >>> hex(id(a)) # 還原成我們看著更順眼的16進制,但是本文以10進制地址為主(因為懶) '0x7fe09a503598'
顧名思義,is是“相同”,而==是指兩者之間的”相等“關(guān)系。所謂相同,比較的是兩者之間的在內(nèi)存中的位置,
>>> a = 3 >>> id(a) 140602638349720 >>> b = 3 # b指向的是和a指向的同一塊地址(但是并不意味這改變了a,b也會相應(yīng)改變) >>> id(b) 140602638349720 >>> c = a # a的引用復(fù)制給c,在內(nèi)存中其實是指向了用一個對象 >>> id(c) 140602638349720 >>> a is b True >>> a is c True >>> b is c True
我們看到,上面a,b,c的地址相同,所以他們互相之間”相同“
而相等則兩者之間的數(shù)值對應(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)容改變時,b也會隨之改變,這和上面 # int對象不同,我也不知道為啥要這么搞。 >>> a[0] = 4 >>> b [4]
很多人看到這肯定是一鍋漿糊了,其實就是一個原則,能用==就不用is。除了一種情況,那就是判斷對象是否是None。
>>> if a is None: ... pass
以上就是我們本篇探究python運算符中在不同的情況下選擇is還是==,相信大家已經(jīng)明白兩個的區(qū)別和用法了,小編還是推薦使用==多一點。
本文標(biāo)題:創(chuàng)新互聯(lián)Python教程:python運算符中如何選擇is和==?
URL網(wǎng)址:http://www.dlmjj.cn/article/dhisjid.html


咨詢
建站咨詢
